首页 > 解决方案 > 通过 eloquent 用一个对象更新 mongodb 集合

问题描述

我想通过 eloquent 将以下对象保存到 mongodb 集合上的字段中

 "project_settings" : {
    "resource" : true,
    "zone" : true,
    "contractor" : true,
    "responsible_person" : false
 }

这是我的 php 代码:

return ProjectModel::where($project_id)->first()->update($project_data);
          

不要担心它工作正常的模型我需要进行更新项目集合的查询

和 $project_data =

project_settings:array(4)
  resource:true
  zone:true 
  contractor:true
  responsible_person:true

现在我没有得到任何错误。它返回成功,但实际上没有任何更新。有人可以帮忙吗?

标签: phplaravelmongodbeloquent

解决方案


问题可能与您的输入有关。

的方法签名update如下所示:

public function update(array $attributes = [], array $options = [])

所以你传入的属性必须是数组,而不是对象。

where()方法还需要两个输入,例如where('column_name', $value).

所以试试下面的方法:

ProjectModel::find($project_id)->update([
    "project_settings" => [
        "resource" => true,
        "zone" => true,
        "contractor" => true,
        "responsible_person" => false
    ],
]);

推荐阅读