如何在Laravel中更新具有不同ID的多行

时间:2017-10-19 09:19:16

标签: php laravel

这是我提出的最后一个问题..

我有会员资格表

Schema::create('role_memberships', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('role_id');
        $table->string('MembershipName');
        $table->text('MembershipValue');
        $table->timestamps();
    });

我有两个具有相同role_id的行数据,我想更新两行 这是我的控制器

$updateArray = [['MembershipValue' => $request->PostAdMaxImage], 
['MembershipValue' => $request->PostAdExpiredDay]];
DB::table('role_memberships')->where('role_id', $id)-
>whereIn('role_id', $role->pluck('id'))->update($updateArray);

当我尝试更新时,我得到一个错误数组到字符串转换..

6 个答案:

答案 0 :(得分:2)

它对我有用,即使该线程是2年前,我也想分享我的解决方案,我希望这可以对某人有所帮助。

刀片式

<input name="quantity[]">
<input name="total[]">
<input name="prodId[]"> 

控制器

foreach ($request->prodId as $key => $value) {
      $data = array(                 
          'quantity'=>$request->quantity[$key],
          'total'=>$request->total[$key],                   
      );         
      Cart::where('id',$request->prodId[$key])
      ->update($data); 
}

答案 1 :(得分:1)

有2个错误:

1)whereIn函数需要一个参数数组作为

$users = DB::table('users')
                ->whereIn('id', [1, 2, 3])
                ->get();

2)更新函数需要一个简单的数组,例如

DB::table('users')
            ->where('id', 1)
            ->update(['votes' => 1]);

你传递[[], []]

所以你必须传递示例$model->update(['MembershipValue' => $request->PostAdMaxImage])

在这里您找到了updatewhereIn https://laravel.com/docs/5.5/queries

的完整文档

答案 2 :(得分:1)

我认为这只是我可以使用的方式..

DB::table('role_memberships')->where('role_id', $id)->where('MembershipName','PostAdMaxImage')->update(['MembershipValue' => $request->PostAdMaxImage]);
DB::table('role_memberships')->where('role_id', $id)->where('MembershipName','PostAdExpiredDay')->update(['MembershipValue' => $request->PostAdExpiredDay]);

如果你们有最好的方式或最短的方式,请告诉我..谢谢你;)

答案 3 :(得分:0)

试试这个。它适用于我。

  DB::table('role_memberships')->where('role_id', $id)-
>update(['MembershipValue' => $request->PostAdMaxImage, 'MembershipValue' => $request->PostAdExpiredDay]);

答案 4 :(得分:0)

  

我有两行数据,相同的role_id,我想更新两行这是我的控制器

$updateArray = [['MembershipValue' => $request->PostAdMaxImage], MembershipValue' => $request->PostAdExpiredDay]];
DB::table('role_memberships')->where('role_id', $id)->whereIn('role_id', $role->pluck('id'))->update($updateArray);
  

当我尝试更新时,我得到一个错误数组到字符串转换..

这是因为$ updateArray上的数组中有一个数组。像这样修复它应该可以纠正你的错误:

$updateArray = ['MembershipValue' => $request->PostAdMaxImage, 'MembershipValue' => $request->PostAdExpiredDay];

答案 5 :(得分:0)

在LARAVEL中更新批次(批量)

https://github.com/mavinoo/updateBatch

$table = 'users';

$value = [
      [
          'id' => 1,
          'status' => 'active'
      ],
      [
          'id' => 5,
          'status' => 'deactive',
          'nickname' => 'Ghanbari'
     ],
     [
          'id' => 10,
          'status' => 'active',
         'date' => Carbon::now()
     ],
     [
         'id' => 11,
         'username' => 'mavinoo'
     ]
];

$index = 'id';

UpdateBatch::updateBatch($table, $value, $index);