laravel更新多个请求数组

时间:2019-03-19 15:23:54

标签: laravel laravel-5 eloquent

我真的在努力使用这种更新方法,我们将不胜感激任何帮助。

我将向居民发送多个车牌,我可以成功存储和检索它,现在我想对其进行更新。

当我返回$request->cars或dd时,它会给我这个数组。

array:2 [
0 => array:5 [
"id" => 10
"user_id" => 33
"car_number_plate" => "12f3456"
"created_at" => null
"updated_at" => null
]

1 => array:5 [
"id" => 11
"user_id" => 33
"car_number_plate" => "abc -123"
"created_at" => null
"updated_at" => null
]   
]

在这里我找到了相关的ID,需要更新

$userId = ResidentCar::where('user_id', $resident->id)->pluck('id')
->toArray();

它返回这个数组。

array:2 [
0 => 10
1 => 11
]

在这里,我遍历数组并尝试对其进行更新。

$input = $request-cars;

foreach ($input as $row)
{
$cars[] = [
    'user_id' => $resident->id,
    'car_number_plate' => $row['car_number_plate'],
];
}

ResidentCar::whereIn('id', $userId)->update(array($cars));

该错误为Array to string conversion.

以及是否可以

ResidentCar::whereIn('id', $userId)->update($cars);

出现此错误。

Column not found: 1054 Unknown column '0' in 'field list' (SQL: update `resident_cars` set `0` = 33, 

在座的任何人都可以帮助解决问题,或者采用其他更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

就像我在评论中说的那样,您需要每行进行一次更新。

如果要更新的行是$resident->id,而要更新的数据是$row['car_number_plate'],则需要执行以下操作:

$input = $request-cars;
foreach ($input as $row) {
  $data = [
    'car_number_plate' => $row['car_number_plate'],
  ];
  ResidentCar::where('id',$resident->id)->update($data);
}

让我知道是否可行