首页 > 解决方案 > 更新数据库表中的多行

问题描述

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

$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]
]);

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

标签: laravellaravel-5

解决方案


您正在尝试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,您可能会找到更多详细信息。


推荐阅读