#php #laravel-4 #eloquent
#php #laravel-4 #красноречивый
Вопрос:
Я пытаюсь сохранить часть данных формы в сводной таблице. Это отлично работает при сохранении, но я не могу повторить третий столбец (активное логическое значение) при получении отношения.
class _Event extends Eloquent {
protected $table = 'events';
public function groups()
{
return $this->belongsToMany('Group', 'events_groups', 'event_id', 'group_id');
}
}
class Group extends Eloquent {
public function events()
{
return $this->belongsToMany('_Event', 'events_groups', 'group_id', 'event_id')->where('events_groups.active', 1);
}
}
Запуск a dd
из (_Event::with('groups')->find($event_id));
меня :
array(11) {
["id"] "1"
["groups"] array(2) {
[0] array(4) {
["id"] "3"
["admin"] "0"
["pivot"] array(2) {
["event_id"] "1"
["group_id"] "3"
}
}
[1] array(4) {
["id"] "4"
["admin"] "0"
["pivot"] array(2) {
["event_id"] "1"
["group_id"] "4"
}
}
}
}
Моя БД настроена следующим образом (удаляются несвязанные столбцы) :
events : id
groups : id - admin
events_groups : id - event_id - group_id - active
Как я могу также получить active
столбец? `
Ответ №1:
Вам нужен withPivot()
метод.
Из документации:
По умолчанию в сводном объекте будут присутствовать только ключи. Если ваша сводная таблица содержит дополнительные атрибуты, вы должны указать их при определении отношения:
return $this->belongsToMany('Role')->withPivot('foo', 'bar');
Теперь атрибуты foo и bar будут доступны в нашем сводном объекте для ролевой модели.