我想通过登录用户对我的回复或发送给我的邮件来获取数据:
return self::where('sender', '=', 'user1')
->whereIn('id', function($query) {
$query->select(DB::raw(1))
->from('replies')
->whereRaw('replies.messages_id = id AND replies.receiver = ?', array('user1'));
})
->orWhere('receiver', '=', 'user1')
->orderBy('created_at', 'desc')->get();
仅当user1是消息表中的接收者时才有效,但是当他是发件人并且该消息在答复表中具有答复时,只有当接收者作为user1或我作为登录用户时至少有一个答复,我才想获取它。如果我发送一条消息并对其进行回复,而没有接收方答复,那么我想跳过它。
在这一部分中,我将描述我要做什么:
self::where('sender', '=', 'user1')
->whereIn('id', function($query) {
$query->select(DB::raw(1))
->from('replies')
->whereRaw('replies.messages_id = id AND replies.receiver = ?', array('user1'));
})
首先使用从哪里获取与我为发件人的消息,然后使用whereIn检查以前的ID,这些消息来自message_id列中回复表中的先前ID,如果是,我试图说它还需要我作为接收者,如果找回来。
答案 0 :(得分:0)
我刚刚从whereIn
更改为whereExists
,它可以正常工作:D