Laravel Eloquent:选择一个字段等于另一个字段的记录
Posted
技术标签:
【中文标题】Laravel Eloquent:选择一个字段等于另一个字段的记录【英文标题】:Laravel Eloquent: select records where one field equals another 【发布时间】:2020-06-03 21:16:09 【问题描述】:如有重复,我深表歉意。是否可以在 Eloquent ORM 中选择一个字段等于另一个字段的记录?在 mysql 中,这意味着:
SELECT Id, Url, ModelId
WHERE Url LIKE CONCAT('%', ModelId, '%')
是否可以在 Eloquent 中这样做,或者我必须使用原始查询?
【问题讨论】:
【参考方案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'))
以上是关于Laravel Eloquent:选择一个字段等于另一个字段的记录的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 在与其他表连接后从关系中选择字段
Laravel Eloquent 模型按局部列和关系模型列值排序
Laravel Eloquent - 使用 JSON 对象数组
如何使用 Laravel 的 Eloquent/Fluent 将每一行设置为相同的值?