Laravel 5.4 Eloquent where parent

Posted

技术标签:

【中文标题】Laravel 5.4 Eloquent where parent【英文标题】: 【发布时间】:2018-02-21 04:33:50 【问题描述】:

所以我设置了两个模型,用户和帖子。 Post 有一个belongsTo 设置的用户,而用户有一个hasMany 设置的帖子。

在获取我的所有帖子时,我想确保该用户未被禁止。 Banned 是数据库中名为ban 的列中的一个整数,我想确保它等于0。我最初循环浏览帖子,检查以确保用户没有被禁止,然后将其推送到数组并通过该数组到工作正常的视图。但是,我现在想启用分页,但由于我没有传入 eloquent 对象,所以它被破坏了。

这是我现在的雄辩:

$posts = Post::where('status', '>', 1)->orderBy('published_date', 'desc')->paginate(10);

【问题讨论】:

应该通过哪个模型和哪个字段来检查用户? 【参考方案1】:

使用whereHas()

$posts = Post::where('status', '>', 1)->whereHas('user', function($q) 
    $q->where('ban', 0);
)->orderBy('published_date', 'desc')->paginate(10);

我假设,您在 User 模型上与 Post 模型有 user 关系。

【讨论】:

以上是关于Laravel 5.4 Eloquent where parent的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 5.4 播种功能时出错

在 Laravel 5.4 (Eloquent ORM) 中自动删除 NESTED 相关行

Laravel 5.4:使用eloquent和fillable字段更新多个表的多个模型

分类 slug + post slug Laravel Eloquent

Laravel 5.4雄辩的一对多关系

php Laravel 5 Eloquent CheatSheet #laravel #eloquent