Содержимое referenced from и содержимое использует

Аватар пользователя sapfir sapfir 22 ноября 2019 в 9:29

Ребятки, спасибо всем, кто мутит Drupal и те, кто русскоязычное сообщество развивает, этому сайту. Я сейчас сижу кайфую от Друпал, делаю систему, изучаю Views, все шикарно. Друпал мощная вещь!

Вопрос у меня по Views, а именно по замечательной штуке Cвязи во views, Relationships, Entity Referens и тп.

Объясните пожалуйста, что означают эти два типа связей?

Содержимое referenced from field_takoe_to
Местонахождение: tam_to

Содержимое использует field_takoe_to
Связать каждую Содержимое с field_takoe_to с содержимое.

  • Что значит Содержимое referenced from
  • Что значит Местонахождение
  • Содержимое использует
  • Связать каждую Содержимое с с содержимое

Sql более менее использую и Join Poin тоже и создаю довольно сложные представления (из 2-3-4 таблиц) может по аналогии с ним объяснит кто ни будь.

А в целом задача простая.

Допустим есть три объекта

  • Человек
  • Водитель
  • Маршрут

Мне нужны часть полей из

Водитель

  • код
  • телефон
  • категория прав

Человек

  • заголовок (имя чела)
  • фото

Маршрут

  • название маршрута

Водитель ссылается на Человек и Маршрут (ссылка на сущность типа содержимое). Поля ссылок называются: ВодительЧеловек и ВодительМаршрут.

  • Человек (Поле: ВодительЧеловек)
  • Маршрут (Поле: ВодительМаршрут)

Вообщем поля объекта Водитель

  • Node Id
  • Заголовок
  • ВодительЧеловек (Ссылка на Человек)
  • ВодительМаршрут (Ссылка на Маршрут)

Делаю представление.
(Настройки всякое такое пропускаю)

Выбираю нужные мне поля

  • ВодительКод (id материала по сути) - Да
  • ВодительТелефон - Да
  • ВодительАвто - Да
  • ВодительЧеловек - Да
  • ВодительМаршрут - Да
  • ВодительЧеловекФото - Нет

Нажав добавить поле в представление в выпадающем списке вариантов полей я вижу поле ВодительЧеловекФото и выбираю его, но фотографию не подгружаются. И я так понимаю, что нужно добавить связь. Хотя я думал, что если связь не добавлена, то и поля в списке не должно быть. Но вообще Водитель ссылается на Человек и может быть поэтому поле ВодительЧеловекФото есть в списке доступных полей.

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

В Sql я бы просто связал Водитель.ЧеловекКод = Человек.ЧеловекКод и Водитель.МаршрутКод = Маршрут.МаршрутКод. И потом выбрал бы все нужные поля и они появились бы. И я мог бы использовать JOIN или WHERE. Как такое же проворачивать во Views. То, что нужны связи я понял. Но не донца понял, как эти связки работают.

Напоминаю вопросы

  • Что значит Содержимое referenced from
  • Что значит Местонахождение
  • Содержимое использует
  • Связать каждую Содержимое с с содержимое
  • Что значит Дельта

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

Лучший ответ

Аватар пользователя ivnish ivnish 22 ноября 2019 в 11:06
1

Добавлю, что вы можете включить во вьюсе отображение sql запроса. Так вам будет легче понять что происходит

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 22 ноября 2019 в 10:12
1

Views более высокий layout между запросов и ER, для примера если есть сущность и в ней есть поле типа entityreference на taxonomy_term, что чтобы вывести поле из термина для объекта нужна связь, тогда поля из термина можно будет добавить для вывода views.
А так то визуально в сущности создается ссылочное поле на связь.
Технически создается отдельная таблица для поля с id сущности владельца, дельтой и значением id связанной сущности.

Аватар пользователя sapfir sapfir 22 ноября 2019 в 10:52

Значит если есть entityreference, то некоторые поля доступны, но не все? И как я заметил минимум будет доступно поле "заголовок (title)" того entity на которое ссылается первое entity? А вот все остальные поля или некоторые из них могут быть визуально доступны в списке полей (как у меня в примере с фото), но вот их содержимое доступно не будет, пока не пробросишь явную связь через связи?

А вот насчет Layout, ER, технически отдельная таблица с id сущности и т.п. это очень интересная информация, возьму на заметку, что бы в будущем понять это по сильнее.

А поля со словом дельта я действительно встречал, но я совсем не понимаю пока, что это. Если у тебя не займет много времени, не будет трудно и ты мог бы хотя бы вкратце рассказать об этом, то буду очень признателен за это тоже.

Аватар пользователя ivnish ivnish 22 ноября 2019 в 11:06
1

Добавлю, что вы можете включить во вьюсе отображение sql запроса. Так вам будет легче понять что происходит

Аватар пользователя sapfir sapfir 22 ноября 2019 в 11:24

ivnish wrote:
Добавлю, что вы можете включить во вьюсе отображение sql запроса. Так вам будет легче понять что происходит

Кстати да спасибо за дельный совет. На самом деле я так и сделал за что спасибо еще кстати Ивану с Youtube и его видео о Views. Это реально полезная функция и я обрадовался когда ее обнаружил.

И пользуясь случаем хочу рассказать о своем опыте с этим. Это мне уже пару раз помогло. Я даже пару раз заглянул в таблицы Drupal и читнул хорошую статью в которой говорилось про поля и bundle, жаль потерял ссылку на нее, новичку было бы полезно. Все это немного помогло прочесть Sql. А так я с предвкушением жду тех временем, когда я смогу спокойно читать Sql по Views-ах, но похоже надо еще подучиться, как следует). Из за того, что это не просто Sql, а генертор Sql некоторые места для меня действительно, как код я который я не могу расшифровать, не зная чем и как тут занимается Друпал.

Думаю может уйти 2-3 года. Друпал прекрасная система, она одновременно просто для тех, кто хочет с ней работать по простому и невероятно мощная для тех, кто хочет с ней работать мощно. Очень круто, очень круто. Спасибо Вам ребята за дельные советы.

Аватар пользователя sas@drupal.org sas@drupal.org 22 ноября 2019 в 11:12
1

Значит если есть entityreference, то некоторые поля доступны, но не все?

Для вывода доступности само поле этого типа, а для того чтобы вывести поля из сущности на которую есть ссылки в нем - нужна связь чаще всего.

А вот все остальные поля или некоторые из них могут быть визуально доступны в списке полей (как у меня в примере с фото), но вот их содержимое доступно не будет, пока не пробросишь явную связь через связи?

Бывает уже есть контроллер для поля по умолчанию.
поля сущности связанной с родителем через поле связи - через "связь" views

delta - номер элемента для поля, для упрощения все поля - множественные так и связи, просто если не множественное то delta только 0 Smile
в отличие от полной ER типы связей упрощены до "многие к одному" в поле entityreference

Аватар пользователя marassa marassa 22 ноября 2019 в 13:35
2

sapfir wrote:

  • Что значит Содержимое referenced from
  • ...

  • Содержимое использует


Второе - прямая связь, первое - обратная. То есть во втором случае мы отбираем материалы, на которые ссылается ER-поле текущего материала, а в первом - материалы, которые своими ER-полями ссылаются на текущий.
sapfir wrote:
Что значит Дельта

Дельта - это порядковый номер значения в поле, позволяющем хранить несколько значений.