Пример получения списка опубликованных материалов типа article
со всеми полями и свойствами:
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node');
$query->propertyCondition('status', 1);
$query->propertyCondition('type', 'article');
$result = $query->execute();
$nodes = node_load_multiple(array_keys($result['node']));
Написанное актуально для
Drupal 7
Комментарии
Что то ни как у меня ... не выходит аленький цветок...)))
->fieldCondition('field_parent', 'target_id', 'NULL', 'IS NULL')
(Ни чего не помогает...)
Подскажите как получить пустые поля?
у меня
fieldCondition(...'NULL', 'IS NULL')
работает. сомнения вызывает колонка target_idУ меня находит значение NULL - если оно явно прописано(есть в базе)
А если это:
То это не находит.
(Версия СУБД 5.5.27-29.0)
Подскажите чем ещё можно воспользоваться, какой конструкцией поиска в базе?
Сделал так:
2 вариант: можно ведь присваивать NULL при сохранении новой ноды.
Как бы сделали вы? (Автор этого замечательного блога))))
можно создать свой CustomEntityFieldQuery унаследованный от EntityFieldQuery и переопределить в нём метод finishQuery — http://drupal.org/node/1226622
по другому никак
Решение интересное, но я это ООП плохо понимаю...)))
Такие строчки: class EntityFieldQueryForNullFields extends EntityFieldQuery { - меня пугают...))) я даже не знаю куда это вставлять, просто в свой модуль?
Два запроса к базе это мне понятно... но это плохо...
EntityFieldQuery - находит NULL, если он явно есть в таблице этого поля, так что мне проще(и понятнее) было реализовать свой 2 вариант:
Уважаемые программисты!
Как я могу в своем модуле вывести в виде чекбокс списка список заголовков нод определенного типа. Как это можно реализовать?
в статье пример - отвечает на половину вашего вопроса
ещё нужно передать это в форму - http://xandeadx.ru/blog/drupal/205
как то так.
Сергей, почитайте.
Подскажите, а как вывести все в цикле по одной
например их 100 тыс
Вы видимо не посмотрели что их более 100 тыс пришлось выделить жирным...)))
1 тыс или даже 10.000 запросто но 100.000 - не хватает памяти(256 Мб) - 512 правда хватает.
Чтобы не напрягать сделал по 1000 цикл по count() а получаем по range().
EntityFieldQuery
У меня вопросик: Можно ли по двум полям искать, но что бы получали id ноды если есть хотя бы одно из полей. Или делать два запроса по каждому полю? Как это можно сделать в одном запросе? Например:
http://drupal.stackexchange.com/questions/14499/using-or-with-entityfie…
Уважаемый xandeadx, а подскажите пожалйста, а как получить ноду, если мы не знаем ее id.
К примеру программно загрузить объект ноды определенного типа материала (например order), у которой поле data (созданное по средством модуля Date API) имеет конкретное значение? (не прибегая к views)
Задача изначально стоит такова:
Есть список заявок. У каждой заявки есть поле "Порядковый номер". А так же есть поле "Дата посещения" (Date API). После создания ноды с определенной выбраной датой, нужно программно просканировать, есть ли еще заявки на эту же дату, если их нет, то присвоить программно полю порядковый номер "1", а если есть, то определить какой наибольший порядковый номер и присвоить на единицу больше.
Реализация:
сюда выложил свой некорректный код http://pastebin.com/22xaZjxz
скопировал неправильно
по ссылке в строке 16 там не
а
но все равно не работает
Все разобрался! 4 улетело
http://pastebin.com/ZgVzNxiM
Скажите, а как добавить сортировку по дате?
EntityFieldQuery::propertyOrderBy
EntityFieldQuery::fieldOrderBy
EntityFieldQuery::entityOrderBy
Добавить комментарий