仅当表包含来自不同行的多个值时,才从表中获取ID

时间:2018-12-06 03:12:46

标签: php mysql laravel eloquent

我有一个包含channel_members的{​​{1}}表。如果有多个行使用相同的channel_id, user_id,而该行包含我将提供的多个channel_id,则需要获取channel_id

示例: 如果表格中有5行

user_id

我需要获取CHANNEL_ID | USER_ID 2 | 2 2 | 3 2 | 4 3 | 2 3 | 4 2、3和4正在使用的channel_id。因此,根据我提供的上表。我应该得到user_id 2。

2 个答案:

答案 0 :(得分:0)

我假设您已经定义了用户界面模型,根据您提供的描述,频道与用户之间有很多关系

class Channel extends Model
{
    public function members()
    {
        return $this->belongsToMany('App\User', 'channel_members', 'channel_id', 'user_id');
    }
}

使用雄辩的语言,您可以查看相关模型的存在性

$channels = App\Channel::whereHas('members', function ($query) {
                        $query->where('id', '=', 2);
                    })->whereHas('members', function ($query) {
                        $query->where('id', '=', 3);
                    })->whereHas('members', function ($query) {
                        $query->where('id', '=', 4);
                    })->get();  

上方只会返回您根据提供的ID与所有3个用户相关联的频道

Querying Relationship Existence

答案 1 :(得分:0)

SELECT CHANNEL_ID 
FROM channel_members 
WHERE USER_ID in (2,3,4)
GROUP BY CHANNEL_ID 
HAVING COUNT(CHANNEL_ID) > 0