Запрос сущности не возвращает все результаты


По какой-то причине мой EntityQuery возвращает 60 статей. На самом деле их 63. Я уверен в этом.

Вот несколько вопросов, которые у меня есть:

  1. Я не думаю, что изменения включены для моих типов контента, но как мне проверить? И как мне сделать это программно? Я не уверен, возвращает ли мой EntityQuery nids или vids...
  2. Почему EntityQuery не может найти статью? Кажется, что он не может его найти, даже если я просто найдите узлы, содержащие часть его названия. Он возвращает 0 результатов.

Вот что я попробовал:

Я сделал цикл и загрузил узлы из nid, распечатал заголовки и скопировал вставленные заголовки узлов (отфильтрованные по статьям) из списка содержимого, провел различие с результатами в алфавитном порядке, чтобы найти три статьи, которые EntityQuery не считает существующими. Все они кажутся нормальными статьями, которые можно просматривать/редактировать.

Я начал отладку в ядро Файлы EntityQuery, но я боюсь, что с такой скоростью мне потребуется некоторое время, прежде чем я пойму, что происходит. Кто-нибудь знает, почему EntityQuery может не найти определенные узлы или даже иметь представление о том, где я должен искать в основных файлах или что я мог бы ожидать в таблицах БД?

Я использую MySQL 5.7, если это вообще имеет значение.

РЕДАКТИРОВАТЬ: Кто-то попросил код, я делаю запрос сущности для всех статей, но я не получаю все они:

$query = \Drupal::entityQuery('node')
  ->condition('type', 'article');
$entity_ids = $query->execute();

foreach($entity_ids as $id){
  echo $id->getTitle() . "\n";
  // Do I do Drupal entity node load, or do I load via revision ID?
  // Here I would like to load the node and then do stuff with it...
}
 2
Author: RaisinBranCrunch, 2017-03-01

1 answers

Я добавил метаданные в запрос, запустив его от имени пользователя 1, что позволило ему получить все узлы:

$query = \Drupal::entityQuery('node')
    ->condition('type', 'article')
    ->addMetaData('account', \Drupal\user\Entity\User::load(1)); // Run the query as user 1.
$nids = $query->execute();

echo "count: " . $query->count()->execute() . "\n";

foreach ($storage->loadMultiple($nids) as $node){
  //do stuff
}

Кроме того, поскольку для узлов разрешены ревизии, он возвращал $nids как revision_id =>entity_id, как сказал Бердир в своем комментарии.

 4
Author: RaisinBranCrunch, 2017-03-02 16:33:27