【问题标题】:Laravel query builder/Eloquent mass update use data from current queryLaravel 查询构建器/Eloquent 批量更新使用当前查询中的数据
【发布时间】:2018-01-11 08:50:28
【问题描述】:

我想做这样的东西Pseudocode

UPDATE `table` SET `path`=REPLACE('pathpath','other',`path`) WHERE `ready_to_publish`=1

但我想使用 Eloquent/Query builder。我知道存在DB::raw,我可以直接设置,但应用程序必须支持许多 RDBMS 类型并且使用查询生成器很舒服。

我知道我可以在 2 个查询中完成

1 获取所有 id,path 其中 ready_to_publish 为 1 替换 PHP 2. 使用链中的所有数据构建更新查询。

我的问题是,是否可以像纯 SQL 一样在一个查询中实现。

提前感谢任何提示。

【问题讨论】:

    标签: php laravel eloquent laravel-query-builder


    【解决方案1】:

    你可以这样做,

    Table::where('ready_to_publish',1)->update(['pathpath',$newpath]);
    

    并且您需要将pathpath 定义为可填充模型,例如,

    protected $fillable = ['pathpath'];
    

    【讨论】:

    • 我不确定如何解决我的问题。例如我的 laravel 代码\DB::table('files')->where('directory','layout')->update(['directory',str_replace('layout','layout.my',$directory)]);,在这种情况下,我想在$directory 中的位置应该是当前的directory 列值。
    • @jaroApp 那么,抱歉我不明白你的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2020-09-09
    • 2020-03-19
    • 2016-03-30
    • 2016-02-09
    • 2016-06-30
    • 1970-01-01
    相关资源
    最近更新 更多