У меня есть две модели, а именно MedicineRequestEntry и MedicineRequest. MedicineRequestEntry связан с MedicineRequest через
Теперь в сеточном представлении MedicineReuestEntry я пытаюсь получить данные из модели MedicineRequest, используя отношение двумя альтернативными способами.
В этом методе я получаю значение как не установлено.
и другой метод:
В этом методе я получаю ошибку как:
Получение неизвестного свойства: app models MedicineRequestEntry :: $ data-> MedicineRequests-> is_delivered
Теперь мне нужна помощь, что я здесь делаю неправильно.
Спасибо.
Решение
Вы должны использовать функцию обратного вызова, см. гид :
У меня есть несколько таблиц с отношениями (через одну и через две), и отношения эти работают. К примеру, в модели Player есть
Когда я пишу в контроллере PlayerController
я получаю в Gridview доступ к полям из таблицы pt, если меняю getPts() на getTournaments() то могу вывести поля из tournament.
А как сделать чтобы получить все поля, из обеих таблиц? Подскажите, перечитал все руководства уже — застрял и всё.
1 ответ 1
Во первых вам нужно уточнить свой вопрос, что имеется ввиду к полям из таблицы , у вас связь hasMany, вы хотите получить к полям рельтата запроса? или все же просто к единым полям
В Yii2 связи подхватываются автоматически, на то он и магический метод геттер. В Grid view вам необходимо получать доступ к полям из связей так: пример
при наличии связи hasMany , необходимо обрабатывать список результатов к примеру через анонимную функцию
надо только посмотреть где в $data хранится массив с результатами
Разбираемся как использовать виджет GridView в своих проектах
- Главная
- Блог
- Yii2 GridView — виджет таблицы данных
GridView — мощный виджет для вывода ваших данных на сайте в виде таблицы. После автоматической генерации вида модели получается что-то такое:
Выглядит на странице это таблицей
1. Через свойство виджета tableOptions можно изменить класс таблицы
2. Можно задать класс отдельно для строк через свойство rowOptions. В примере ниже используется анонимная функция.
3. Можно изменить шаблон вывод gridview с помощью свойства layout
4. Свойства showHeader и showFooter — для показа заголовка и футера таблицы
5. emptyCell — для показа чего-то, если ячейки пусты
6. Для кнопок управления тоже можно редактировать template, добавлять свои кнопки или изменять вид у используемых по-умолчанию.
Можно указывать свойства для каждой собственной кнопки управления через анонимную функцию
7. Для каждого атрибута можно указать свои свойства в contentOptions. Это может быть как анонимная функция, так и провто стили.
8. Можно использовать сокращённый формат для атрибута. Будет ‘attribute:format:label’, где attribute — данные из модели, format — шаблон вывода данных ( ‘raw’ , ‘text’ , ‘html’ , ‘image’ , ‘datetime’ , ‘time’ , ‘date’ , [ ‘date’ , ‘php:Y-m-d’ ] и другие), label — заголовок столбца. В итоге, код
9. Чтобы отобразить картинку в ячейке, можно после двоеточия указать тип image у атрибута картинки, либо использовать функцию в value для более широкой настройки.
10. Cсылку вывести в GridView можно так же, указав в value для атрибута
11. Связанные модели
где getParentName() описана в соответствующей модели
12. Вывод даты и времени в GridView
13. Сделать выпадающий DropDownList в фильтре GridView
и в модели получать список категорий
Если вам мало возможностей стандартного GridView, предлагаемого разработчиками Yii, посмотрите в сторону навороченного Gridview от kartik-v.