更新数据库表中的多行

时间:2018-07-24 15:59:35

标签: laravel laravel-5

我想更新多行。这是我的控制器文件:

$ids = [$request->get('com_id')];
$name = [$request->get('com_name')];
$stat = [$request->get('com_status')];
$now = Carbon::now();
$count = count($ids);
$thiss=$request->validate(
    ['com_name' => 'required',
    'com_status' => 'required'
]);
// $i=0;
for ($i=0; $i <$count ; $i++) { 
    $companies = companies::find($ids[$i][0]);
    companies::where('id',$ids[$i][0])
    ->update(['company_name' => $name[$i][0],
    'status' =>  $stat[$i][0]
]);

但是在我的代码中,仅第一行正在更新。如何用数组索引号更新多行?

1 个答案:

答案 0 :(得分:0)

您正尝试从二维数组访问id,并且正在初始化$ids变量,如$ids = [$request->get('com_id')];。请首先检查您是否拥有$ids数组中的所有ID。如果还可以,那么以下任何代码都可以工作,

// #1
companies::where('id', $ids[$i][0])
            ->update([
                'company_name' => $name[$i][0],
                'status' =>  $stat[$i][0]
            ]);

// #2
$company = companies::find($ids[$i][0]);
$company->company_name = $name[$i][0];
$company->status = $stat[$i][0];
$company->save();

您应该按照文档进行更新,请查看https://laravel.com/docs/5.6/eloquent#updates,您可能会发现更多详细信息。