/** * @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]; }
/** * @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"); } }