选择具有特定价值作为孩子的记录

时间:2018-06-11 10:37:48

标签: mysql eloquent

enter image description here

我想让用户按类别进行过滤,因此我将category_id作为参数发送,并且应该使用此category_id选择在users_categories_restrictions表中没有& 记录的用户。

如何制作这个雄辩的查询?

1 个答案:

答案 0 :(得分:2)

您可以使用whereDoesntHave

$users = App\User::whereDoesntHave('categories', function ($query) use($cat_id) {
    $query->where('categories.id', '=', $cat_id);
})->get();

我假设您已经定义了用户和类别模型之间的多对多关系

class User extends Model
{
    public function categories()
    {
        return $this->belongsToMany(Category::class, 'users_categories_restrictions', 'user_id');
    }
}


class Category extends Model
{
    public function users()
    {
        return $this->belongsToMany(User::class, 'users_categories_restrictions', 'category_id');
    }
}