我在Laravel 4.2,看起來像這樣Laravel 4.2 - 機鋒WHERE子句與OR和反向參數
$user_message_block = Message::where('responder_id', '=', Auth::user()->id)
->where('user_id', '=', $user->id)->first();
雄辯的發言之後,如果$user_message_block
不存在,我也有,檢查是否有反向的情況和我不喜歡這樣......
if(!$user_message_block){
$user_message_block = Message::where('responder_id', '=', Auth::user()->id)
->where('user_id', '=', $user->id)->first();
}
我真正想要做的是運行檢查一次兩種情況下單個查詢..
在僞è上的表達,我需要這樣的:
$user_message_block = Message::where('responder_id', '=', Auth::user()->id,
'AND', 'user_id', '=', $user->id,
'OR', 'responder_id', '=', $user->id,
'AND', 'user_id', '=', Auth::user()->id)->first();
所以基本上我需要
SELECT Message where (responder_id=x AND user_id=y) OR where (responder_id=y AND user_id=x)
我怎麼能做到這一點使用侃侃而談。我無法找到更多關於與Eloquent一起使用的OR和AND語句。
謝謝!
UPDATE:
經過尋找,我發現,這似乎是工作
$user_message_block =
Message::where(['responder_id' => Auth::user()->id, 'user_id' => $user->id])
->orWhere(['user_id' => Auth::user()->id, 'responder_id' => $user->id])
->first();
OR
$user_message_block =
Message::where(['responder_id' => Auth::user()->id, 'user_id' => $user->id])
->orWhere(['user_id' => Auth::user()->id, 'responder_id' => $user->id])
->get();
有什麼缺點(有很多還在測試)到這一點,我需要考慮?
mmmm ,,我剛剛發現了一些關於雄辯的東西似乎工作,我會更新我的問題。它看起來像我可以傳遞信息的數組,並使用 - >或有雄辯的條款。 – GRowing 2014-10-07 20:30:47
如果已經爲您提供瞭解決方案,請接受它作爲答案。 – 2014-10-07 21:09:29
我正在使用上面發佈的解決方案。稍後我會對此進行測試,看看是否有任何明顯的差異使得此解決方案更加可行。 – GRowing 2014-10-07 21:26:04