我有一個基於某些參數提取用戶的查詢。Laravel where子句無法在系列或其他地方工作
$users = User::where(function($query) use($queryTags_userIDs) {
$query->whereIn('id', $queryTags_userIDs);
})->orWhere(function($query) use($queryImageTitles_userIDs) {
$query->whereIn('id', $queryImageTitles_userIDs);
})->orWhere('username', 'LIKE', "%{$query}%")
->orWhere('keywords', 'LIKE', "%{$query}%")
->orWhere('profile_text', 'LIKE', "%{$query}%")
->orWhere('tagline', 'LIKE', "%{$query}%")
->where('role', 2)
->orderBy('last_login', 'desc')
->paginate(15);
現在,這整個事情很好。
除本部分:
->where('role', 2)
而是讓用戶在那裏角色是2,它提取的每一個角色的用戶。
但是,它會工作,如果我擺脫了一些orWheres。
如果我擺脫這些3個orWheres的:
->orWhere('keywords', 'LIKE', "%{$query}%")
->orWhere('profile_text', 'LIKE', "%{$query}%")
->orWhere('tagline', 'LIKE', "%{$query}%")
然後開始取用戶只用角色2.事實上,這3個特定orWheres是,不管是什麼原因,導致該問題
如果我減少查詢只
$users = User::where('username', 'LIKE', "%{$query}%")
->orWhere('keywords', 'LIKE', "%{$query}%")
->where('role', 2)
->orderBy('last_login', 'desc')
->paginate(7);
它仍然得到用戶的角色之外2.
但是,如果它是將其切換到這一點:
$users = User::where('username', 'LIKE', "%{$query}%")
->where('role', 2)
->orderBy('last_login', 'desc')
->paginate(7);
然後突然它只是會從角色2.
用戶爲什麼會出現這種情況?我覺得我錯過了一些超級明顯的東西,因爲這沒有意義。
編輯
爲了應對厄爾尼諾的Bassem哈希姆,我把角色= 2在查詢的開始。但它仍然不起作用。這裏是變更後的查詢:
「從
users
選擇*其中role
=和(在id
(,,,,, )???????)或(id
在(? ,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?,?,?))或(username
LIKE?或keywords
???LIKE或profile_text
LIKE或tagline
等),以便通過last_login
desc」的
試試我的新答案。另一個'WHERE'全部是'OR's還是有另一個強制性的WHERE? –
新答案有效。 –