在Laravel中更新数据库的多行 [英] Update multiple rows of database in Laravel

查看:93
本文介绍了在Laravel中更新数据库的多行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要一个用于更新数据库多行的代码,像这样:

I want a code for update multiple rows of database, somthing like this:

UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=1;
UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=2;
UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=3;

几个小时后,我可以在laravel框架中得到如下结果:

After some hours i could get result with something like this in laravel framework:

$values = Value::where('project_id', $id)->get();
$sql = "";
foreach($request->fields as $field) {
  if(!empty($field->default)) { //New default value is set
    foreach($values as $value) {
      $data = json_decode($value->data, true); /**data column as json object in mysql database **/
      $data["default"] = $field->default;
      $data = json_encode($data);
      $sql .= "update ".DB::connection()->getDatabaseName().".values set data='".$data."' where id="."$value->id;";
    }
  }
}
DB::unprepared($sql);

但是此代码不是一个好习惯! 所以我的问题是

but this code is not a good practice! So my question is

有没有更好的ORM方法?!

Is there any ORM way to do this better?!

推荐答案

这是一种简单的方法.

$values = Value::where('project_id', $id)->update(['data'=>$data]);

我从链接

希望有帮助.

这篇关于在Laravel中更新数据库的多行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆