Я работаю над проектом, который имеет много-много отношений между User
и Club
. Это соотношение работает, и я могу получить соответствующие объекты с помощью: $user->clubs
. Сводная таблица, которую я назвал memberships
. Я могу получить сводные данные с $club->pivot
. Внешние ключи определены для таблицы memberships
при миграции.Laravel: Как создать настраиваемую сводную модель?
Однако, я хотел бы сводную таблицу, чтобы быть представлен моделью, так что я могу легко обновить атрибуты Membership
, такие как роль (или даже добавить Role
модели в Membership
!) Или status
.
Я посмотрел на «Defining A Custom Pivot Model» в документации, но то, что он говорит, что не работает для меня, я получаю:
ErrorException Argument 1 passed to Illuminate\Database\Eloquent\Model::__construct() must be of the type array, object given
Я также посмотрел на this description, как это сделать это, но это более или менее то же самое, что и выше.
Membership
модель:
class Membership extends Eloquent {
protected $table = 'memberships';
public function user()
{
return $this->belongsTo('User');
}
public function club()
{
return $this->belongsTo('Club');
}
}
Кто-нибудь делал это раньше?
Я бы рекомендовал использовать надлежащую ORM, такую как Doctrine2. У вас не будет ошибок, создающих новый Entity, потому что вы будете контролировать каждый бит, а не зависеть от самой Framework. –
Мне очень нравится, как работает «Красноречивый». Я знаю, что я пытаюсь сделать, это может быть сделано (это в документах), просто проблема с работой. – Robin
Вы пробовали Doctrine2? Это действительно приятно по сравнению с этим. У вас есть ваша Сущность и точно определяют, что она содержит в коде, вы делаете свои геттеры и сеттеры (возможно, присоединяете некоторые к событиям сохранения или обновления) и выполняете их. Вы оставляете всю свою конфигурацию отношений в аннотациях, Doctrine организует все для вас. Это означает, что вы можете просто создать новый Entity, не беспокоясь о том, как структура заполняет его или делает что-либо с ним. –