Запрос сущности не возвращает все результаты
По какой-то причине мой EntityQuery возвращает 60 статей. На самом деле их 63. Я уверен в этом.
Вот несколько вопросов, которые у меня есть:
- Я не думаю, что изменения включены для моих типов контента, но как мне проверить? И как мне сделать это программно? Я не уверен, возвращает ли мой EntityQuery nids или vids...
- Почему 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...
}
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, как сказал Бердир в своем комментарии.