【问题标题】:Laravel Eloquent: select records where one field equals anotherLaravel Eloquent:选择一个字段等于另一个字段的记录
【发布时间】:2020-06-03 21:16:09
【问题描述】:

如有重复,我深表歉意。是否可以在 Eloquent ORM 中选择一个字段等于另一个字段的记录?在 MySQL 中,这意味着:

SELECT Id, Url, ModelId 
WHERE Url LIKE CONCAT('%', ModelId, '%')

是否可以在 Eloquent 中这样做,或者我必须使用原始查询?

【问题讨论】:

    标签: sql laravel eloquent orm


    【解决方案1】:

    在查询构建器(和 eloquent)中等于另一个字段的字段是 whereColumn('Url', 'LIKE', 'ModelId'),但由于您在第二部分中有其他内容,您将需要使用原始查询,例如,

    DB::table('table')
       ->select('Id', 'Url', 'ModelId')
       ->where('Url', 'LIKE', DB::raw("CONCAT('%', ModelId, '%')"));
    

    【讨论】:

    • 谢谢!是否可以将whereColumn 与闭包一起使用以进行进一步处理?例如:如果我想SELECT * FROM table WHERE column1 = column2+column3 如果是,我该如何使用它们?
    • 你仍然需要一个DB::raw,因为它是一个更复杂的操作,例如where('column1', DB::raw('column2+column3'))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2022-10-15
    • 1970-01-01
    • 2014-12-13
    • 2019-08-10
    相关资源
    最近更新 更多