试图在laravel中获得回复我的消息

时间:2018-08-07 01:37:50

标签: laravel

我想通过登录用户对我的回复或发送给我的邮件来获取数据:

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,如果是,我试图说它还需要我作为接收者,如果找回来。

1 个答案:

答案 0 :(得分:0)

我刚刚从whereIn更改为whereExists,它可以正常工作:D