Помогите, пожалуйста, составить запрос во views

Главные вкладки

Аватар пользователя Дед Пихто Дед Пихто 8 ноября 2011 в 20:55

2-й день туплю и никак не могу составить запрос во views
Схема такая: Есть тип данных: "Организация", в нем есть поле "Куратор" типа User Reference. Необходимо при передаче параметром nid записи "Организация" получить записи из блога пользователя, чей uid записан в поле "Куратор".
Чувствую, что хожу рядом, но никак не соображу где порыться в месте с собакой Smile

Заранее благодарю за помощь!

Комментарии

Аватар пользователя goodboy goodboy 8 ноября 2011 в 23:13

Готового решения у меня нет (возможно, есть доп. модули к Views, самому интересно узнать).

Я бы сделал следующим образом: создал 2 вьюва. Первый - на тип материала "Организация", Взаимосвязь по полю "Куратор", аргумент - nid Организации. На выходе - uid куратора. Второй вьюв - на тип материала "Блог", аргумент - uid пользователя. Далее, в шаблоне вывода первого вьюва программно вызывать второй вьюв, подставляя аргументом текущий uid. Также, можно посмотреть SQL-запросы двух вьювов и объединить их в один.

Аватар пользователя Дед Пихто Дед Пихто 9 ноября 2011 в 9:25

Спасибо, коллега.
Это решение мне тоже пришло в голову. Так же как и решение хранить nid организации в профиле у Куратора. Но это сильно меняет глобальную задачу, большую часть которой я уже сделал, да и как-то не хочется разочаровываться в том, что выюс не всемогущ...

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 9 ноября 2011 в 10:29

1. Создаем View, который показывает записи блога
2. Создаем Аргумент - uid
3. Для настройки Action to take if argument is not present: - Provide default argument - PHP code
4. Пишем код, который загрузит ноду по nid и вернет значение поля куратор

Аватар пользователя goodboy goodboy 9 ноября 2011 в 11:17

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

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 9 ноября 2011 в 11:47

Goodboy wrote:
Да, ваше решение полегче. Но зато у меня проще будет вывести в случае необходимости информацию по куратору (фото,ФИО,...). А также проще сделать переход, если профили кураторов решат хранить в нодах.
Лишний раз убеждаешься в гибкости и мощи Друпала.

Мой случай только дополняет ваше решение функцией Default Argument - если его вызывать с аргументом, то отработает как обычно. Т.е. его можно вызывать из другой вьюхи, например.
Я бы делал свой View блоком, который можно вывести, скажем, на странице куратора и/или организации.

Аватар пользователя goodboy goodboy 9 ноября 2011 в 13:18

Да, я тоже пользуюсь Default Argument, удобная штука.

Согласен, я так и делал: на странице Организации блок со ссылкой на профиль Куратора, а в профиле блок с информацией по куратору (в данном случае, список статей). Топикстартеру нужно 2 в 1 - имеет право.

Аватар пользователя Дед Пихто Дед Пихто 9 ноября 2011 в 12:29

"G.A. Vinogradov" wrote:
1. Создаем View, который показывает записи блога
2. Создаем Аргумент - uid
3. Для настройки Action to take if argument is not present: - Provide default argument - PHP code

А аргумент же имеется, правда это nid, а не uid. Система сама распознает, что аргумент "не того формата" и перейдет к выполнению кода?
"G.A. Vinogradov" wrote:

4. Пишем код, который загрузит ноду по nid и вернет значение поля куратор

И если аргумента нет, то как я вытащу этот Nid?

Аватар пользователя Дед Пихто Дед Пихто 9 ноября 2011 в 16:11

Сделал! Спасибо, друзья, за помощь!
Внесу свои дополнения.
1. Действительно, если передается в параметрах nid, то для uid это означает, что параметр не передается. Поэтому Пункт 3 из ответа уважаемого G.A. Vinogradov работал, в чем я изначально сомневался
2. Я зачем-то начал создавать Зависимость, чем запутал себя
3. CKEditor gпочему-то не отключился при редактировании поля для ввода PHP кода, что очень мешало. Не нашел другого способа убрать редактор кроме как отключив javascript в настройках views

Еще раз спасибо Goodboy и G.A. Vinogradov!