Пример #1
0
 /**
  * Get or create record relation by it's name and pre-loaded (optional) set of data.
  *
  * @param string $name
  * @param mixed  $data
  * @param bool   $loaded
  * @return RelationInterface
  * @throws RelationException
  * @throws RecordException
  */
 public function relation($name, $data = null, $loaded = false)
 {
     if (array_key_exists($name, $this->relations)) {
         if (!is_object($this->relations[$name])) {
             $data = $this->relations[$name];
             unset($this->relations[$name]);
             //Loaded relation
             return $this->relation($name, $data, true);
         }
         //Already created
         return $this->relations[$name];
     }
     //Constructing relation
     if (!isset($this->ormSchema[ORM::M_RELATIONS][$name])) {
         throw new RecordException("Undefined relation {$name} in record " . static::class . ".");
     }
     $relation = $this->ormSchema[ORM::M_RELATIONS][$name];
     return $this->relations[$name] = $this->orm->relation($relation[ORM::R_TYPE], $this, $relation[ORM::R_DEFINITION], $data, $loaded);
 }