Рейтинг:1

Как использовать entityQuery с настраиваемым типом поля?

флаг mx
awm

Я работаю над созданием запроса для узлов, у которых есть несколько настраиваемых полей (типов полей). Поля создаются в пользовательском модуле с пользовательской схемой. Когда я выполняю запрос:

 $query = \Drupal::entityQuery('узел')
    ->условие('тип', 'место');
 $query->условие('my_custom_field', '', '<>');

Он завершается с сообщением о том, что: node__my_custom_field.my_custom_field_value не существует (НЕ найден). Это правильно, таблица имеет пользовательскую схему для этого поля. _стоимость не существует:

 drush sqlq "описать node__my_custom_field"

пакет varchar(128) NO MUL     
удалено tinyint(4) NO PRI 0   
entity_id int(10) без знака NO PRI NULL    
ревизия_id целое (10) без знака NO MUL NULL    
langcode varchar(32) НЕТ PRI     
delta int(10) без знака NO PRI NULL    
текст my_custom_field_title YES NULL    
Текст my_custom_field_description YES NULL

Как заставить мой запрос поля объекта работать с этой настраиваемой схемой поля?

Рейтинг:2
флаг cn

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

Вы можете указать столбец поля для использования с . такое обозначение:

$query->условие('my_custom_field.title', '', '<>');
$query->условие('my_custom_field.description', '', '<>');

Если вы хотите, чтобы система учитывала, например, заглавие свойство по умолчанию вместо стоимость, вы можете реализовать FieldItemBase:: mainPropertyName() в вашем полевом классе:

общедоступная статическая функция mainPropertyName() {
  вернуть «название»;
}

Это заставит вашу исходную линию работать для заглавие столбец:

$query->условие('my_custom_field', '', '<>');
awm avatar
флаг mx
awm
Спасибо .. Я должен был догадаться об этом ..

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.