1
我一直試圖做的Laravel查詢,在原始的SQL會是這樣雄辯WHERE LIKE子句有兩個以上的列
"SELECT * FROM students WHERE (((students.user_id)=$id) AND (((students.name) Like '%$q%') OR ((students.last_name) Like '%$q%') OR ((students.email) Like '%$q%')))")
我按照這個線程(Eloquent WHERE LIKE clause with multiple columns),它工作得很好,但只有兩列EJ:
$students = student::where(user_id, Auth::id())
->whereRaw('concat(name," ",last_name) like ?', "%{$q}%")
->paginate(9);
但是,如果我添加兩個以上的列後,將所得變量始終是空的,不管是什麼在變量$ q比賽與一列或多列:
$students = student::where(user_id, Auth::id())
->whereRaw('concat(name," ",last_name," ",email) like ?', "%{$q}%")
->paginate(9)
我很確定我錯過了一些東西,但我找不到它是什麼。提前致謝。
SQL的毗連返回null如果任何字段爲空。這不是問題嗎?考慮到它與2的工作,第三個領域是可疑的... –
好吧,所以這是問題,但我該如何解決它,因爲我允許人們存儲電子郵件,但不是強制性的,但這是爲了過濾表用一個簡單的搜索,所以我希望它過濾考慮到所有的列,也就是說,如果其中一個是空的不要轉換所有其他的空 –
使用'concat_ws'而不是'concat'可以幫助解決NULL正確。但是mbozwood的回答似乎對我來說更加雄辯。 –