php - 仅当表包含来自不同行的多个所需值时如何从表中获取 ID

标签 php mysql laravel eloquent

我有一个包含channel_id, user_idchannel_members 表。如果有多行使用相同的 channel_id,其中包含我将提供的多个 user_id,我需要获取 channel_id

例子: 如果表中有5行

CHANNEL_ID | USER_ID   
2          | 2   
2          | 3   
2          | 4   
3          | 2   
3          | 4   

我需要获取 user_id 2、3 和 4 正在使用的 channel_id。所以根据我提供的上表。我应该得到 channel_id 2。

最佳答案

我假设你已经定义了你的关系 uisng 模型,根据你提供的描述, channel 与用户有多对多的关系

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

使用 eloquent realtions 你可以检查相关模型是否存在

$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 个用户有关联的 channel

Querying Relationship Existence

关于php - 仅当表包含来自不同行的多个所需值时如何从表中获取 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53644071/

相关文章:

javascript - 如何访问 php/mysql 查询值以在 jQuery 中使用?

mysql - 在 DQL 中的另一个 SELECT 查询中实现 SELECT 查询(Doctrine)

php - 如何在 Laravel 中启用 CORS?

php - Laravel通过中间表获取belongsTo

php - META 值 charset=UTF-8 防止 UTF-8 字符显示

php - codeigniter 中的表单验证自定义消息?

mysql - 跳过 MySQL 密码

php - Laravel:如何通过 id 从集合中删除项目

PHP 多语句执行在后台

mysql - 基于JOINED表性能问题的选择