2016-11-29 5 views
-1

Мне нужно взять данные из отношения, принадлежащего ToMany с ownToMany, это будет так: A-> B-> C в моей модели будет провайдерами-> caption-> eventType, поэтому вам нужно выведите всех поставщиков из типа события.BelongsToMany с BelongsToMany отношение

модель выглядит следующим образом:

провайдеров Модель

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

Thnks.

+0

Пожалуйста, добавьте ваши отношения и/или модели, иначе вам не поможет. – martinczerwi

+0

Модель такая же, как и прокомментировал там партнер Сомья Растоги, спасибо –

ответ

0

Согласно моему пониманию нашей модели структуры должен выглядит следующим образом:

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); 
    } 
} 

и получить все providers для EventType, вы получите это так:

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

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

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

Надеется, что это помогает!

+0

Привет, Как вы уже сказали, так у меня есть отношения в модели, но когда я хочу передать данные через $ event-> титры () -> провайдеры Я получаю эту ошибку: Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection :: $ providers –

+0

О, это плохо, см. мой обновленный ответ выше! –

+0

Спасибо, брат, это мне очень помогло –

Смежные вопросы