Создание представлений с 4 связанными сущностями

Аватар пользователя batulin batulin 25 января в 9:48


Здравствуйте друзья! Помогите пожалуйста разобраться. Делаю сайт для учета книг в библиотеке. Есть три основные сущности или типа материалов: книга, читатель и выдача. При выдаче книги читателю на руки, создается материал типа выдача со ссылками на читателя и на книгу и с датой выдачи и датой возврата. (схема на рисунке). Я сделал уже несколько представлений, необходимых для работы сайта с вашей помощью (спасибо). Последнее представление "Книги на руках у определенного читателя", расположенное на странице читателя я создал как вывод читателей с контекстным фильтром по id. Но через связь с выдачей я вывел книги, т.е. поле книга каждой выдачи, имеющей ссылку на данного читателя.
Сделал я так потому что не знал как сделать контекстный фильтр по связанному материалу.
На данный момент задача усложнилась - необходимо вывести в этом представлении автора книги (четвертая сущность, ссылка на которую содержится в поле книги, см. рисунок).
Вопрос в том, как это можно реализовать - так же выводя через читателя и через несколько связей от читателя к полю книги "автор", или создавать представления выдачи или книги с контекстным фильтром через связь или через несколько связей. Подскажите пожалуйста можно ли и как использовать промежуточные связи и как использовать контекстный фильтр через связь? Спасибо.

Комментарии

Аватар пользователя marassa marassa 25 января в 12:56
1

batulin wrote: Сделал я так потому что не знал как сделать контекстный фильтр по связанному материалу.

Но сейчас-то знаете? Я же объяснял.

batulin wrote: необходимо вывести в этом представлении автора книги (четвертая сущность, ссылка на которую содержится в поле книги, см. рисунок)

Для того, чтобы просто вывести какую-то информацию об авторе, совершенно необязательно подвязывать сущность Автор к запросу View. Достаточно отформатировать поле Автор в Book либо как Label (если ФИО автора достаточно), либо как Rendered Entity. В последнем случае если нет готового вью-мода для Автора с нужными полями, то нужно его создать в настройках отображения типа материала Автор.

Аватар пользователя batulin batulin 25 января в 14:54

Здравствуйте Андрей! Не совсем понял, для чего в поле что то редактировать, если я вывожу эти поля во views?

Аватар пользователя marassa marassa 25 января в 15:10
1

Ни в каком поле ничего редактировать не надо. При выводе каждого поля во View Вы выбираете форматтер. Если поле - ссылка на сущность, то выбор форматтера Rendered entity позволяет вывести всю эту сущность в нужном виде, не привязывая ее через Связи. По большому счету Связи нужны только если есть необходимость фильтрации или сортировки по полю другой сущности, для простого отображения это избыточно и как правило не нужно.

Аватар пользователя gun_dose gun_dose 25 января в 13:04
1

При добавлении новых связей есть селектор выбора связи для создания связи. Короче это вообще не проблема.

Аватар пользователя batulin batulin 25 января в 14:56

Здравствуйте Алексей! Несколько раз пробовал вывести такие связи, но почему то не срабатывало. Сейчас получилось. Слава Богу! Спасибо.

Аватар пользователя gun_dose gun_dose 25 января в 17:38

Скорее всего вы сначала выбрали не ту связь. Там в списке большинство связей идут в две стороны. Ну типа одно поле Entity Reference предоставляет две связи - тот, кто ссылается, и тот, на кого ссылаются. И там в списке как-то непонятно написано, что легко можно перепутать. Ну и само собой, если связь выбрана не в ту сторону, то вьюха работать не будет, либо будет работать неправильно.