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

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

Set or get attribute value
public setValue ( null $value = null, boolean $fromDb = false )
$value null
$fromDb boolean
    public function setValue($value = null, $fromDb = false)
    {
        if ($fromDb) {
            $this->value = $value;
            return $this;
        }
        if (!$this->canAssign()) {
            return $this;
        }
        if (!$fromDb) {
            $value = $this->processSetValue($value);
            $value = $this->normalizeValue($value);
            $this->validate($value);
        }
        $this->value = $value;
        return $this;
    }

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::setValue