php - 拉维尔 5.2。数据库表 + 加入更新

标签 php mysql laravel inner-join

我需要表目录中的更新键并编写查询(mysql 查询是正确的):

update attributes a inner join catalog c on a.parent_id = c.id set a.key = c.left_key

和 Laravel 数据库:

DB::table('attributes as a')
    ->join(catalog as c', 'a.parent_id', '=', 'c.id')
    ->update([ 'a.key' => 'c.left_key' ]);

这是正确的查询,但是 DB::table ... 将表目录中的所有键都设为 0。 我写

DB::statement('update attributes a inner join catalog c on a.parent_id = c.id set a.key = c.left_key;');

这是工作!但我不明白为什么 DB::table with join 和 update 不起作用

最佳答案

你可以这样尝试:

DB::table('attributes as a')
   ->join('catalog as c', 'a.parent_id', '=', 'c.id')
   ->update([ 'a.key' => DB::raw("`c`.`left_key`") ]);

关于php - 拉维尔 5.2。数据库表 + 加入更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329670/

相关文章:

php - 密码重置后删除该用户的所有 session cookie

php - 如何处理图像 blob 列 mySQL PHP

javascript - Jquery指定动态表头特定行上的结果循环

php - 使用复选框和内爆数组构建 Mysql 查询

php - 比较2个mysql数据库

php - 在事件记录和即将到来的事件记录之间进行更改的最佳方式是什么?

mysql - 简单的选择查询优化

php - CodeIgniter 3 中的命名查询绑定(bind)?

php - Laravel 5 和委托(delegate)。如何同时保存用户和附加角色

php - 如何在自定义 Blade 指令中传递参数?