我想編寫一個查詢,選擇來自1個實體的2個屬性具有相同值的行。在laravel中選擇等於2列的行查詢生成器
這將是在原始SQL這樣的例子:
Select * from users u where u.username = u.lastname
是否laravel有拿2列名作爲參數,並返回匹配結果的任何方法?
我想編寫一個查詢,選擇來自1個實體的2個屬性具有相同值的行。在laravel中選擇等於2列的行查詢生成器
這將是在原始SQL這樣的例子:
Select * from users u where u.username = u.lastname
是否laravel有拿2列名作爲參數,並返回匹配結果的任何方法?
你需要的是一個DB::raw
表達:
DB::table('users')
->where('username', '=', DB::raw('lastname'))
->get();
唯一DB::raw
實際上,它只是告訴查詢解釋不治療'lastname'
像任何其他字符串值,但只是插值它在SQL,因爲它是。
在Laravel 5,有nowwhereColumn
此,對於清潔器的代碼:
Users::whereColumn('username', 'lastname')->get();
這僅僅是因爲laravel 5.2可用,而不是在5.1LTS例如。不知道爲什麼@ceejayoz拒絕了我的編輯。答案並不準確,因爲這個功能在「laravel 5」中不可用。 – rrrafalsz 2018-03-02 15:41:58
@rrrafalsz'whereColumn'在所有當前支持的Laravel版本中。 5.1的支持在2017年6月結束。 – ceejayoz 2018-03-02 15:44:24