将 where 条件应用于多态关系中的相关模型 laravel 8

Apply where condition to related models in polymorphic relation laravel 8

我在多态关系中遇到一个问题,我无法使 whereHas 起作用。关系代码对 return 相关模型工作正常,但需要将 where 条件应用于与多态关系相关的模型关系?

我的多态关系是由两个模型映射的。例如:Events 和 Meetings 这两个模型都有自己的关系来存储他们的受让人(属于许多人)我需要将 where 条件应用于受让人关系以获取所需的数据,在我的多态关系中,我得到了与受让人的数据,但不是与已应用条件。

class MainEvant extends Model
{
     public function eventheadable()    
         {  
          return $this->morphTo('eventhead', 'event_type_id', 'event_id')
           ->morphWith([ Events::class=>['assignee'],             
                     Meeting::class=>['assignee'], ]); 
              }

}

我最近也遇到了类似的问题,我是这样解决的,不知道代码质量如何

在你的控制器中,

 MainEvant::with('eventheadable')->whereHasMorph('eventheadable',Events::class,function ($query)  {
                $query->whereHas('assignee', function ($q)  {
                    $q->where(); // Your Condition
                });
            })->orwhereHasMorph('eventheadable',  Meeting::class,function ($query) {
                $query->whereHas('assignee', function ($q)   {
                    $q->where(); // Your Condition
                });
            })->get();

也可以在官方文档中查看,

文档:https://laravel.com/docs/8.x/eloquent-relationships#querying-morph-to-relationships