Webiny\Component\Entity\Attribute\Many2ManyAttribute::getValue PHP Метод

getValue() публичный Метод

Get attribute value
public getValue ( array $params = [], boolean $processCallbacks = true ) : null | EntityCollection
$params array
$processCallbacks boolean
Результат null | Webiny\Component\Entity\EntityCollection
    public function getValue($params = [], $processCallbacks = true)
    {
        if ($this->isNull($this->value)) {
            $this->value = $this->load();
        }
        // Add new items to value and unset these new items
        foreach ($this->addedItems as $item) {
            $this->value[] = $item;
        }
        $this->addedItems = [];
        return $this->processGetValue($this->value, $params, $processCallbacks);
    }

Usage Example

Пример #1
0
 public function save(Many2ManyAttribute $attribute)
 {
     $collectionName = $attribute->getIntermediateCollection();
     $firstClassName = $this->extractClassName($attribute->getParentEntity());
     $secondClassName = $this->extractClassName($attribute->getEntity());
     // Ensure index
     $indexOrder = [$firstClassName, $secondClassName];
     list($indexKey1, $indexKey2) = $this->arr($indexOrder)->sort()->val();
     $index = [$indexKey1 => 1, $indexKey2 => 1];
     Entity::getInstance()->getDatabase()->ensureIndex($collectionName, $index, ['unique' => 1]);
     /**
      * Insert values
      */
     foreach ($attribute->getValue() as $item) {
         $firstEntityId = $attribute->getParentEntity()->getId()->getValue();
         if ($item->getId()->getValue() === null) {
             $item->save();
         }
         $secondEntityId = $item->getId()->getValue();
         $data = [$firstClassName => $firstEntityId, $secondClassName => $secondEntityId];
         try {
             Entity::getInstance()->getDatabase()->insert($collectionName, $this->arr($data)->sortKey()->val());
         } catch (\MongoException $e) {
             continue;
         }
     }
     /**
      * The value of many2many attribute must be set to 'null' to trigger data reload on next access.
      * If this is not done, we may not have proper links between the 2 entities and it may seem as if data was missing.
      */
     $attribute->setValue(null);
 }
All Usage Examples Of Webiny\Component\Entity\Attribute\Many2ManyAttribute::getValue