【发布时间】:2020-06-03 21:16:09
【问题描述】:
如有重复,我深表歉意。是否可以在 Eloquent ORM 中选择一个字段等于另一个字段的记录?在 MySQL 中,这意味着:
SELECT Id, Url, ModelId
WHERE Url LIKE CONCAT('%', ModelId, '%')
是否可以在 Eloquent 中这样做,或者我必须使用原始查询?
【问题讨论】:
如有重复,我深表歉意。是否可以在 Eloquent ORM 中选择一个字段等于另一个字段的记录?在 MySQL 中,这意味着:
SELECT Id, Url, ModelId
WHERE Url LIKE CONCAT('%', ModelId, '%')
是否可以在 Eloquent 中这样做,或者我必须使用原始查询?
【问题讨论】:
在查询构建器(和 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'))