2016-03-08 4 views
0

У меня есть другой вопрос. У меня есть модель страны:Laravel принадлежитToMany Вопрос о связи

protected $fillable = [ 
    'code', 'latitude', 'longitude', 'currency_id', 'timezone', 'dam_date', 'status', 
]; 

public function neighbors() { 

    return $this->belongsToMany('App\Models\Country', 'country_country_relation', 'country_id_1', 'country_id_2'); 

} 

Я хочу показать соседям какой-то страны. К сожалению, соседи() работают только в одном направлении.

Пример: Если я добавлю Австрию в качестве страны-соседа Германии, когда я смотрю страницу Германии, я вижу Австрию, но когда я вижу страницу Австрии, я не считаю Германию соседкой. Что я должен изменить, чтобы сделать это возможным?

ответ

0

То, о чем вы спрашиваете, является ссылкой на таблицу для многих-многих отношений. В вашем случае проблема заключается в том, что вы сохраняете сводную таблицу от id к другому. Таким образом, он может извлекать только таким образом. Имея только одно отношение, у вас есть проблема с ключевым порядком, чтобы иметь возможность извлекать их в обоих направлениях.

Посмотрите на это (вы в конечном итоге с 2-мя способами, чтобы вызвать отношение как путь): Laravel Many to many self referencing table only works one way

Лучшее решение здесь: https://github.com/laravel/framework/issues/441

+0

делать и означает я должен использовать две функции с изменением порядка полей ? –

+0

Два метода - один из вариантов. Я предпочитаю тот, который был в последнем ответе (от marco-solaire) по ссылке на github в моем ответе. Идея состоит в том, чтобы использовать один метод отношения, но когда вы добавляете страну, которая вам нужна, то другой. Поэтому, если вы добавите Германию в качестве соседи Франции, вам нужно добавить Францию ​​в качестве соседа Германии. То, что он сделал, - это создать способ сделать это как для добавления, так и для удаления отношения. Прочитайте это очень просто, вы увидите ;-) – Mushr00m

+0

aa ok. Спасибо за ответ, я подумаю, какой вариант лучше для меня. –

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