laravel morphedbymany where条件和计数

lf3rwulv  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(335)

我有两个表:post和pages共享一个标签表(morphtomany)。
我的表和关系:
表:标记id、名称

public function posts()
{
return $this->morphedByMany('App\Post', 'taggable');
}
public function pages()
{
return $this->morphedByMany('App\Page', 'taggable');
}

表:posts id,name,active

public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}

表:页id、名称、活动

public function tags()
{
return $this->morphToMany('App\Tag', 'taggable');
}

如何从pages.active和posts.active所在的两个表中获取所有标记和计数
我尝试了此查询,但此查询仅返回两种模型中的标记:

Tag::whereHas("posts", function($q) {

$q->where("posts.active", "=", 1);

})->whereHas("pages", function($q) {

$q->where("pages.active", "=", 1);

})->get();

我需要一个查询,可以返回标签,如果存在于其中一个模型,但活跃=1。

ajsxfq5m

ajsxfq5m1#

你可以试试

$tags = Tag::where( function( $query ){
        $query->whereHas('posts', function ( $subquery ){
            $subquery->where('active', 1 );
        })
        ->orWhereHas('pages',function ( $subquery ){
            $subquery->where('active', 1 );
        });
      })->withCount('posts','pages')->get();

相关问题