我想编写一个查询,选择1个实体中2个属性具有相同值的行.
这将是在原始SQL中执行此操作的示例:
Select * from users u where u.username = u.lastname
Run Code Online (Sandbox Code Playgroud)
laravel是否有任何方法可以将2列名称作为参数并返回匹配结果?
Ser*_*hiv 30
你需要的是一个DB::raw表达式:
DB::table('users')
->where('username', '=', DB::raw('lastname'))
->get();
Run Code Online (Sandbox Code Playgroud)
DB::raw实际上唯一能做的就是告诉查询解释器不要'lastname'像对待任何其他字符串值那样对待,而只是在SQL中插入它.
http://laravel.com/docs/queries#raw-expressions
在Laravel 5中,现在 有了whereColumn更清洁的代码:
Users::whereColumn('username', 'lastname')->get();
Run Code Online (Sandbox Code Playgroud)