批量更新RESTful控制器中laravel 4模型中的belongsToMany关系

时间:2013-09-19 22:01:13

标签: php rest laravel laravel-4 eloquent

我有一个选项模型,它使用belongsToMany与其他选项的关系。

我在RESTful场景中设置了控制器。当我对选项模型进行更新时,我正在通过使用下面的代码进行批量分配来更新模型:

public function update($id)
    {
        $data = Input::json()->all();

        $option = Option::where('id','=',$id)->with('optionRelationValue')->first();
        $option->fill($data['option']);
        $option->save();

        return json_encode(array('option' => $option->toArray()));
    }

在我使用“optionRelationValue”的值数组更新模型之前,这是有效的,因为这是驱动关系的属性。

我现在收到以下错误:

{
  "error": {
    "type": "ErrorException",
    "message": "Array to string conversion",
    "file": "/[REMOVED]/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
    "line": 352
  }
}
  1. 当存在关系时,是否可以使用质量分配更新模型?

  2. 如果是这样,我如何更新与新连接的关系?

1 个答案:

答案 0 :(得分:0)

我的特定问题的答案有两个。

#1 我试图将数组值保存到字段中,错误提醒我这个事实。在保存到字段之前,需要将其转换为字符串。一个简单的implode()为我解决了这个问题。

#2 我还假设laravel会发现我有一段关系可以同时修改并且对我有用。错了。

我保存关系更改的解决方案涉及模型的“附加”和“分离”方法,这些方法很棒。