Я унаследовал 4 MySQL таблицы:Eloquent belongsToMany withPivot отображение
перечислений
-id
-description
...
локаций
-id
-listing_id
направляющие
-id
-name
....
guide_location
-id
-guide_id
-location_id
Листинг => (много) Местоположение
Guide => (many) Местоположение => (1) Листинг
Листинг, расположение и руководство - это собственная модель в приложении Laravel Dingo. Вот установка:
//Listing model
public function locations()
{
return $this->hasMany('Location');
}
Тогда
//Location model
public function guides()
{
return $this->belongsToMany('Guide');
}
public function listing()
{
return $this->belongsTo('Listing');
}
И
//Guide model
public function locations()
{
return $this->belongsToMany('Location');
}
Я добавил столбец guide_location, и я хочу, чтобы вернуть его, когда я выбираю Руководство от база данных.
Итак:
guide_location
-id
-guide_id
-location_id
-положении
Я попытался добавления ->withPivot('position')
к обоим belongsToMany()
заявления в руководстве и местоопределении моделей но он не работает, я не вижу новый столбец.
Любые идеи, что я делаю неправильно?
Я немного смущен, если вы только что добавили столбец, зачем вам поворачиваться в другую таблицу? Или вы впервые представили пятую таблицу, и когда вы запрашиваете «Руководство», которое возвращает «Местоположение руководства», тогда вы также хотите, чтобы «Guide Location» возвращалось с результатом «отношений позиции» ? – Ohgodwhy
Может быть, с Pivot это не команда, в которой я нуждаюсь? Из [docs] (https: // laravel.com/docs/5.1/eloquent-relationship), он предположил, что это единственный способ получить эту другую ценность, если я не ошибаюсь в ней. «По умолчанию на сводном объекте будут присутствовать только ключи модели. Если ваш опорный элемент таблица содержит дополнительные атрибуты, вы должны указать их при определении отношения: « – OrdinaryHuman
Это справедливо только в том случае, если вы используете сводную таблицу, но вы не в этом случае,« guide_location »не является сводной таблицей и не является даже Polymorphic, у него просто много ограничений. если я запрошу '$ guide = Guide :: find ($ id) -> с ('guide_location');' Я бы ожидал увидеть столбец 'position' в моем возвращении, учитывая код, который вы предоставили выше. У вас фактически есть таблица «позиция», которую вы пытаетесь объединить в таблицу «guide_location»? – Ohgodwhy