我想编写一个查询,选择来自1个实体的2个属性具有相同值的行。
这是在原始SQL中执行此操作的示例:
Select * from users u where u.username = u.lastname
laravel是否有任何方法可以将2列名称作为参数并返回匹配的结果?
答案 0 :(得分:29)
您需要的是DB::raw
表达式:
DB::table('users')
->where('username', '=', DB::raw('lastname'))
->get();
DB::raw
实际做的唯一事情是告诉查询解释器不将'lastname'
视为任何其他字符串值,而只是插入它在SQL中原样。
答案 1 :(得分:3)
在Laravel 5中,为了更清晰的代码,有now whereColumn
:
Users::whereColumn('username', 'lastname')->get();