Intereting Posts
Исправлен отбор HTML и PHP с помощью Vim Как привязать параметры к необработанному запросу БД в Laravel, который используется на модели? Как я могу убедиться, что я поймал все ошибки из MySQLi :: multi_query? Как обрезать свойства объекта в PHP? Получите метаинформацию, заголовок и все изображения любой веб-страницы, используя php jQuery Создать многомерный массив Magento – Как получить данные о товарах в header.phtml Селен не показывает неудачные номера строк Как получить доступ к ресурсам в папке приложения? Есть ли специальная инициализатор объекта в PHP, как сейчас, на C #? Должен ли я использовать текстовый файл или базу данных для счетчика посетителей PHP? Загрузка изображения Codeigniter будет загружаться только в один каталог Yii Записывает таблицу, но не все выбранные данные извлекаются Что не так с этим кодом, пожалуйста? (Переменные прохождения формы) Laravel JavaScript передаёт массив из backend в массив в JavaScript

Laravel 4 красноречивый опорный стол

У меня три таблицы: пользователи, элементы и 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; 

Помните о двух вещах:

  1. Eloquent использует «предметы» как ключ внутри, так что это может мешать.
  2. Какой бы метод вы не ставили перед тем, как «get ()» является частью запроса db. Все после «get ()» обрабатывается PHP на объекте. Последний в большинстве случаев будет медленнее.