Пример #1
0
 /**
  * @param Field\Relation $field
  * @return Model|\Dja\Db\Model\Query\QuerySet
  */
 protected function getLazyRelation(Relation $field)
 {
     $name = $field->name;
     if (!array_key_exists($name, $this->relationDataCache)) {
         $this->relationDataCache[$name] = $field->getRelation($this);
     } elseif (is_array($this->relationDataCache[$name])) {
         if (!empty(array_filter($this->relationDataCache[$name]))) {
             $relClass = $field->relationClass;
             $this->relationDataCache[$name] = new $relClass($this->relationDataCache[$name], false);
         } else {
             $this->relationDataCache[$name] = null;
         }
     }
     return $this->relationDataCache[$name];
 }
Пример #2
0
 /**
  * @param $value
  * @throws \InvalidArgumentException
  */
 public function validate($value)
 {
     parent::validate($value);
     if (is_int($value)) {
         if ($value <= 0) {
             throw new \InvalidArgumentException("Field '{$this->name}' must be integer > 0");
         }
     } elseif (is_object($value)) {
         if (!$value instanceof \Dja\Db\Model\Model) {
             throw new \InvalidArgumentException("Field '{$this->name}' must be instance of \\Dja\\Db\\Model\\Model");
         }
         if (get_class($value) !== $this->relationClass) {
             throw new \InvalidArgumentException("Field '{$this->name}' must be instance of {$this->relationClass}");
         }
     } else {
         throw new \InvalidArgumentException("Field '{$this->name}' must be integer or object");
     }
 }