У меня три таблицы: пользователи, элементы и user_items. Пользователь имеет много элементов, а элемент принадлежит многим пользователям.
Столы:
Users id username password Items id name equipable User_items id user_id item_id equipped
Модели:
class User extends Eloquent { public function items() { return $this->belongsToMany('Item', 'user_items') ->withPivot('equipped'); } } class Item extends Eloquent { public function users() { return $this->belongsToMany('User', 'user_items'); } }
В таблице pivot (user_items) у меня есть очень важный столбец с именем «оборудованный».
У меня есть форма, где пользователи могут экипировать, снимать и бросать предметы. Эта форма имеет скрытое поле с идентификатором строки таблицы (user_items). Таким образом, когда пользователь пытается оснастить элемент, система проверяет, является ли элемент экипированным.
Итак, я хочу объект с сводными данными и данными элемента, основанный на item_id из сводной таблицы, я могу отправить обработчику (где обрабатывается вся логика).
Поэтому мне нужно сначала получить доступ к сводной таблице, а затем получить доступ к таблице элементов.
Что-то вроде этого (не работает):
$item = User::find(1)->items->pivot->find(1);
Возможно ли это сделать?
Сначала вы должны включить «equipable» в свой сводный вызов:
return $this->belongsToMany('User', 'user_items') ->withPivot('equipable');
Тогда вы можете спросить Eloquent, если ваш предмет экипирован или нет:
$item = User::with('items')->get()->find(1)->items->find(2)->pivot->equipable;
Помните о двух вещах: