knowledge-8.x-1.x-dev/src/Plugin/views/field/KnowledgeedEntity.php
src/Plugin/views/field/KnowledgeedEntity.php
<?php
namespace Drupal\knowledge\Plugin\views\field;
use Drupal\views\Plugin\views\field\EntityField;
use Drupal\views\ResultRow;
/**
* Views field display for linked entity.
*
* @ViewsField("linked_entity")
*/
class KnowledgeedEntity extends EntityField {
/**
* Array of entities that has knowledge.
*
* We use this to load all the linked entities of same entity type at once
* to the EntityStorageController static cache.
*
* @var array
*/
protected $loadedKnowledgeedEntities = [];
/**
* {@inheritdoc}
*/
public function getItems(ResultRow $values) {
if (empty($this->loadedKnowledgeedEntities)) {
$result = $this->view->result;
$entity_ids_per_type = [];
foreach ($result as $value) {
/** @var \Drupal\knowledge\KnowledgeInterface $knowledge */
$knowledge = $this->getEntity($value);
if ($knowledge) {
$entity_ids_per_type[$knowledge->getKnowledgeedEntityTypeId()][] = $knowledge->getKnowledgeedEntityId();
}
}
foreach ($entity_ids_per_type as $type => $ids) {
$this->loadedKnowledgeedEntities[$type] = $this->entityTypeManager->getStorage($type)->loadMultiple($ids);
}
}
return parent::getItems($values);
}
}
