Здравствуйте.
У меня есть кастомная сущность. У нее есть одни из полей - status, access, uid
Мне надо написать запрос через $query = \Drupal::entityTypeManager()->getStorage('dt_stock_entity')->getQuery();
Условие должно быть такое :
Выбрать записи, у которых uid == id текущего пользователя ИЛИ (status = 1 && access == 1)
Подскажите, пожалуйста, как это можно сделать?
Комментарии
Нужно использовать loadByProperties
<?php $fields = \Drupal::entityTypeManager()
->getStorage('field_config')
->loadByProperties([
'entity_type' => $mask,
'bundle' => $bundle,
]);?>
Метод
loadByProperties
не поддерживает операторы типа OR и тем более - вложенную группировку условий.Уместнее обычный
::entityQuery()
, а-ля:<?php
$query = \Drupal::entityQuery('dt_stock_entity'); $andGroup = $query->andConditionGroup();
$andGroup->condition('status', 1);
$andGroup->condition('access', 1); $orGroup = $query->orConditionGroup();
$orGroup->condition('uid', \Drupal::currentUser()->id());
$orGroup->condition($andGroup);
$query->condition($orGroup); $ids = $query->execute();
if (!empty(
$ids)) {$entities = \Drupal::entityTypeManager()->getStorage('dt_stock_entity')->loadMultiple($ids);
...
}
?>
Да, про ИЛИ я не увидел
Помогло, спасибо большое!