laravel - 应该是一种什么样的关系?

标签 laravel laravel-5.3 laravel-5.4

我有两个模型:UsersCategories

我需要获取用户订阅的所有类别。

确实,数据库结构是:

User    Category   UserCategory
___     _________  __________
id      id | name  category_id user_id

类别模型是:

 public function user()
    {
        return $this->belongsToMany('App\User', 'user_id', 'id');
    }

用户模型是:

public function categories()
    {
        return $this->belongsToMany('App\Category');
    }

我尝试通过第三个表获取用户订阅的所有类别:

$categories =  Category::with("user")->where("id", Auth::user()->id)->get();

这对我不起作用

最佳答案

要获取属于用户的所有类别,请使用whereHas()方法:

$categories = Category::whereHas('users', function($q) use($userId) {
    $q->where('id', $userId);
})->get();

此外,请确保表名称为 categories_users 并定义 users 关系,如下所示:

public function users()
{
    return $this->belongsToMany('App\User');
}

关于laravel - 应该是一种什么样的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42862448/

相关文章:

php - 更改 Laravel 5.4 密码加密和表列名称

php - Laravel 5.4 在 Markdown Mailable 中错误地混合了 HTML 组件

php - 未捕获的异常 : Unable to locate Mix file

javascript - 在 heroku 中部署后 CSS 和 JS 不工作

laravel - 如何为带参数的路由禁用 csrf 保护?

php - 如何在 laravel 中使用 "with"?

laravel - 如何验证控制台命令提示符输入

php - 如何在 Laravel 5.4 中添加自定义用户提供程序

https - 在本地和生产环境中的Laravel Assets 在http和https之间切换

php - 如何在 Laravel Controller 类的构造函数中定义全局变量