我在制作laravel查询时遇到问题:
我想要例如:
SELECT * FROM USERS WHERE (a = b) or (b = a)
我有这个但是没有工作:
$user = Auth::user(); $id_user = $user->id; $message = DB::table('message') ->where('sender_id', '=', $user->id) ->where('reciver_id', '=', $id) ->orWhere(function($query) use ($id,$id_user){ $query-->where('sender_id', '=', $id) ->where('reciver_id', '=', $id_user); }) ->join('users', function ($join) { $join->on('users.id', '=', 'message.sender_id')->orWhere('users.id', '=', 'message.reciver_id'); })->select('users.*', 'message.topic', 'message.message', 'message.read', 'message.created_at as date') ->orderBy('date')->get(); return $message;
答案 0 :(得分:1)
你应该将前两个巢穴嵌入一个新的。请参阅以下代码:
$message = DB::table('message')
->where(function($query) use ($id,$id_user){
$query->where('sender_id', '=', $id_user)
->where('reciver_id', '=', $id);
})
->orWhere(function($query) use ($id,$id_user){
$query->where('sender_id', '=', $id)
->where('reciver_id', '=', $id_user);
})
->join('users', function ($join) {
$join->on('users.id', '=', 'message.sender_id')->orWhere('users.id', '=', 'message.reciver_id');
})->select('users.*', 'message.topic', 'message.message', 'message.read', 'message.created_at as date')
->orderBy('date')->get();