我是Lumen的新手,我正在尝试使用雄辩的Model在单个查询中更新多行。我目前收到此错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: update `articles` set `0` = {"title":"my blogMASSUPDATE","description":"myblogdescriptionMASSUPDATE","status":3}, `1` = {"title":"my blogMASSUPDATE","description":"myblogdescriptionMASSUPDATE","status":3}, `2` = {"title":"my blog33MASSUPDATE","description":"myblogdescription33MASSUPDATE","status":3}, `articles`.`updated_at` = 2019-12-02 08:23:28 where `status` = ==)
JSON有效负载看起来像这样:
{
"array1": [{
"title": "my blogMASSUPDATE",
"description": "myblogdescriptionMASSUPDATE",
"status": 3
}, {
"title": "my blogMASSUPDATE",
"description": "myblogdescriptionMASSUPDATE",
"status": 3
}, {
"title": "my blog33MASSUPDATE",
"description": "myblogdescription33MASSUPDATE",
"status": 3
}]
}
控制器内部的代码如下:
public function massUpdate($id, Request $request){
$this->validate($request, [
'array1' => 'present|array',
'array1.*.title' => 'required',
'array1.*.description' => 'required'
]);
$data = $request->getContent();
$data = json_decode($data, true);
Article::where('status', $id)->update($data['array1']);
}
这是路由器代码:
$router->put('articles/massUpdate/{id}', 'ArticleController@massUpdate');
这是我的RESTClient中用于http请求的URL(请参阅restclient.net):
http://localhost:8080/api/articles/massUpdate/3
我不明白问题是什么,被引用的列存在,并且还有与指定值匹配的字段。
请检查,我认为必须有效:
$data = '{
"array1": [{
"title": "my blogMASSUPDATE",
"description": "myblogdescriptionMASSUPDATE",
"status": 3
}, {
"title": "my blogMASSUPDATE",
"description": "myblogdescriptionMASSUPDATE",
"status": 3
}, {
"title": "my blog33MASSUPDATE",
"description": "myblogdescription33MASSUPDATE",
"status": 3
}]
}';
$data = json_decode($data, true);
foreach ( $data['array1'] as $item ) {
Article::where('status', $id)->update($item);
}