要實作 select * from table where userid=parentid and age>30 這種查詢該如何寫?沒有在文檔裡找到這種用法.
$results = Model::whereRaw('userid=parentid and age>30')->get();
$results = DB::table('table_name')->whereRaw('userid=parentid and age>30')->get();
@ty0716 說的是標準答案。
我來補充一下,為什麼會這樣。 你的需求是,需要引用parentid作為where的右值,但是,在laravel中,where的右值,不能為sql,只能是常規的資料結構,例如字串、數值、時間等。而不能是一個字段名(users.id)之類的有sql功能的東西,這是為了防止sql注入。
users.id
所以,只能用@ty0716所說的raw方法來執行原生的sql了。
沒人知道嗎?
雷雷
方法一
方法二
@ty0716 說的是標準答案。
我來補充一下,為什麼會這樣。
你的需求是,需要引用parentid作為where的右值,但是,在laravel中,where的右值,不能為sql,只能是常規的資料結構,例如字串、數值、時間等。而不能是一個字段名(
users.id
)之類的有sql功能的東西,這是為了防止sql注入。所以,只能用@ty0716所說的raw方法來執行原生的sql了。
沒人知道嗎?
雷雷