2015-11-05 5 views
0

Мне нужна помощь, чтобы найти лучший способ получить данные из следующей структуры таблицы.Каков наилучший способ получить данные с отношениями?

Таблица One: организации имя идентификатор и т.д.

Таблица Два: места имя идентификатор и т.д.

Таблица Три: organisaiton_locations эта таблица имеет отношение следующим образом:

id | organisation_id | location_id 
  • ID: автоинкрементный
  • organisation_id внешней ключ ссылки на идентификатор на столе организаций
  • LOCATION_ID внешней ключ ссылки на идентификатор на таблице местоположений

сывороточного Я стараюсь это с hasManyThrough, я получаю необходимо указать правильное количество пунктов, но они сопоставлены id вместо location_id.

class Organisation extends Model 
{ 

    public function locations() 
    { 
     return $this->hasManyThrough('App\Models\Location', 'App\Models\OrganisationLocation', 'organisation_id', 'id'); 
    } 

} 

Можете ли вы помочь мне понять, как я могу извлечь все места, связанные с организацией, в коллекции, так что можно использовать в трансформаторе.

Заранее благодарен.

ответ

0

Вам не нужно использовать hasManyThough, просто используйте обычный, с через, вы пытаетесь получить доступ к отношениям третьего уровня, где в вашем случае это не так.

Просто замените его:

class Organisation extends Model 
{ 

    public function locations(){ 
     return $this->hasMany(Location::class,'organisaiton_locations', 'organisation_id', 'location_id')->withTimestamps(); 
    } 

} 

и, пожалуйста, не забудьте импортировать класс Расположение (первый аргумент в hasMany функции) или просто использовать его как строку, как вы сделали

, если вы не» t введите временные метки в таблице соединений, а затем удалите это с конца вышеуказанного кода. ->withTimestamps()

+1

Спасибо @mohamed, я решил использовать подход ManyToMany, переименовав имя таблицы в соответствии с требованием Laravel, и это работает отлично. –

+0

@MohitAneja приятно слышать это :) –

0

Один из моих друзей предложил использовать отношение ManyToMany с таким отношением к таблице и его работами кт. Если вы застряли с чем-то подобным, используйте ManyToMany с правильным именем таблицы в алфавитном порядке, и он работает в рамках без каких-либо взломов.

Приветствия!

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