Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
08/05/2020, by maria

Добавить поле

Чтобы добавить поле в запрос Select, используйте метод addField():

$title_field = $query->addField('n', 'title', 'my_title');

Приведенный выше код даст команду запросу выбрать поле «title» таблицы с псевдонимом «n» и присвоить ему псевдоним «my_title». Если псевдоним не указан, он будет создан автоматически. В подавляющем большинстве случаев сгенерированный псевдоним будет просто именем поля. В этом примере это будет «заголовок». Если этот псевдоним уже существует, псевдонимом будет имя таблицы и имя поля. В этом примере это будет "n_title". Если этот псевдоним уже существует, к псевдониму будет добавлен счетчик, пока не будет найден неиспользуемый псевдоним, например «n_title_2».

Обратите внимание, что если вы создаете и заполняете запрос самостоятельно и не указываете псевдоним, а псевдоним по умолчанию недоступен, в вашем коде почти наверняка есть ошибка. Однако, если вы пишете реализацию hook_query_alter(), вы не можете точно знать, какие псевдонимы уже используются, поэтому вы всегда должны использовать сгенерированный псевдоним.

Добавить несколько полей

Чтобы выбрать несколько полей, вызывайте addField() несколько раз в нужном порядке. Обратите внимание, что в большинстве случаев порядок полей не должен иметь значения, и если это имеет значение, то, скорее всего, имеется изъян в бизнес-логике модуля.

В качестве альтернативы вы можете использовать метод fields() для добавления нескольких полей одновременно.

$query->fields('n', ['nid', 'title', 'created', 'uid']);

Вышеуказанный метод эквивалентен вызову addField() четыре раза, по одному разу для каждого поля. Однако fields() не поддерживает указание псевдонима для поля. Он также возвращает сам объект запроса, так что метод может быть объединен в цепочку, а не возвращать любые сгенерированные псевдонимы. Если вам нужно знать сгенерированный псевдоним, используйте addField() или getFields() для доступа к необработанной структуре внутренних полей.

Вызов fields() без списка полей приведет к запросу «SELECT*».

$query->fields('n');

Это приведет к тому, что «n.*» Будет включено в список полей запроса. Обратите внимание, что псевдонимы не будут созданы. Если таблица, использующая SELECT*, содержит поле, которое также указано непосредственно из другой таблицы, в результирующем наборе может произойти столкновение имени поля. В этом случае набор результатов будет содержать только одно из полей с общим именем. По этой причине использование SELECT* не рекомендуется.

Вернуть только одно поле, используя fetchField

Используйте метод fetchField для возврата только одного поля с запросом, например, следующее. (слегка глупый пример)

$query = $connection->select('node', 'n');
$query->condition('n.nid', 123);
$query->addField('n', 'title');
$result = $query->execute();
return $result->fetchField();
Source URL:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.