php - 从父项中获取过滤后的子项

标签 php mysql laravel filter relationship

我有一个一对多的关系。所以我可以使用此代码来显示所有帖子。

$tag = Tag::where('slug', $slug)->first();
$posts = $tag->posts;

它工作正常,但我想过滤子项以显示。例如:

$posts = $tag::whereHas('posts', function($query){
$query->where('accept', 1)
})->get();

但它得到的是标签而不是帖子。知道如何解决我的问题吗?

最佳答案

在 Post 模型中,你必须像这样定义与标签的关系

public function tags(){
    return $this->hasMany(Tag::class);
}

这就是您可以从特定标签获取帖子的方法

$slug = "my-slug";
$posts = Post::whereHas('tags', function($query) use ($slug){
    $query->where('slug', $slug)
})->where('accept', 1)->get();

关于php - 从父项中获取过滤后的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902608/

相关文章:

php - 在 PHP 7.2 Ubuntu 上运行 composer install 时出错

javascript - 我网页上的 PayPal 捐赠确认

php - 如何进一步过滤mysql中的GROUP BY记录?

php - 在html中找到一个元素并将其分解为stock

mysql - 如何在 IN 中使用 json 数组

validation - Laravel 验证用户名不允许有空格

php - 如何使用 PHP/MySQL 跟踪图像/横幅点击/查看

php - 为什么 sqlsrv_connect 不像以前那样工作?

Mysql错误分隔符: Error at Line Delimiter

php - 在 mysql 中更新日期和时间时如何修复 laravel 的错误日期和时间