php - Laravel Eloquent 更新列使用关系列

标签 php laravel eloquent eloquent-relationship

如何实现这个查询?

Sale::with(['catalog'])
    ->whereIn('id', $ids)
    ->update(['price' => DB::raw('catalog.price')]);

这不起作用,它显示未定义的表...我尝试输入表的名称,但它是一样的。

在互联网上,我总能找到简单的查询:

Sale::with(['catalog'])
    ->whereIn('id', $ids)
    ->update(['price' => 5]);

好的!当我想用相同的值更新所有行时很容易,另外当你想用同一个表的列更新时也很容易:

Sale::with(['catalog'])
    ->whereIn('id', $ids)
    ->update(['price' => DB::raw('price_alternative')]);

但是如何使用具有关系的另一个表的列呢?我还没有找到解决方案。

我知道这可以使用整个原始查询来解决,但我想知道它是否可以通过 Eloquent 方式来实现

最佳答案

您可能需要在查询构建器上加入 catalog 表。这与使用 with() 不同。类似的东西

Sale::whereIn('id', $ids)
    ->join('catalog', 'sales.catalog_id', '=', 'catalog.id')
    ->update(['price' => DB::raw('catalog.price')]);

关于php - Laravel Eloquent 更新列使用关系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63187429/

相关文章:

php - Yii2 如何将范围传递给搜索模型

mysql - 有没有办法重置 MySQL 中的所有配置?

拉拉维尔。在具有关系的模型中使用scope()

php - 使用 Laravel 4.1 对 UNION 查询进行排序

json - 从传统的 Laravel/Rails 应用程序迁移到 React.js 生态系统。需要在前端进行数据管理

通过代码下载php图像文件

php - 警告 [缓存] 保存 key 失败

php - 将表单数据插入 MySQL?

node.js - Laravel 5 使用 Node 和 Laravel-Echo-Server 将事件广播到 WildCard channel

php - 在 Laravel 5 中实例化依赖关系,好方法