BelongsToMany 与 BelongsToMany 关系

BelongsToMany with BelongsToMany relation

我需要从 belongsToMany 和 belongsToMany 的关系中获取数据,它会变成这样:在我的模型中 A->B->C 将是 providers->caption->eventType,所以你需要获取所有来自事件类型的提供者。

模型看起来像:

提供商模型

Class Provider extends Model {
   public function captions() {
      return $this->belongsToMany(Caption::class);
   }
}

字幕模型

Class Caption extend Model {
   public function event_type() {
      return $this->belongsToMany(Event_type::class);
   }
   public function providers() {
      return $this->belongsToMany(Provider::class);
   }
}

事件类型模型

Class Event_type extends Model {
   public function captions() {
      return $this->belongsToMany(Caption::class);
   }
}

数据库看起来像:

提供商

编号

名字

event_type

编号

名字

字幕

编号

名字

caption_event_type

caption_id

event_type_id

caption_provider

caption_id

provider_id

谢谢。

根据我的理解,我们的模型结构应该是这样的:

class Provider extends Model {
    public function captions()
    {
        return $this->belongsToMany(Caption::class);
    }
}

class EventType extends Model {
    public function captions()
    {
        return $this->belongsToMany(Caption::class);
    }
}

class Caption extends Model {
    public function providers()
    {
        return $this->belongsToMany(Provider::class);
    }

    public function eventTypes()
    {
        return $this->belongsToMany(EventType::class);
    }
}

并获得 EventType 的所有 providers,你可以这样得到它:

$captions = EventType::find(1)->captions;

foreach($captions as $caption)
{
    $providers_arr[] = $caption->providers;
}

$providers_collection = collect($providers_arr)->unique();

希望对您有所帮助!