コード例 #1
0
 /**
  * Parser callback for onAfterBelongsTo event
  *
  * @param   BelongsTo         $relation  The data structure
  * @param   LocatorInterface  $locator   The XML description file locator
  *
  * @return  void
  */
 public function handleBelongsTo(BelongsTo $relation, LocatorInterface $locator)
 {
     $basename = $this->getBasename($relation->name);
     $field = new Field(get_object_vars($relation));
     $field->name = $basename . '_id';
     $field->type = 'relationKey';
     $this->reflector->addField($field);
     $this->reflector->addHandler($basename, function () use($relation, $locator) {
         $reference = $this->reflector->get($relation->name);
         if (empty($reference)) {
             return null;
         }
         $basename = $this->getBasename($relation->name);
         // The record from {$relation->entity} with id={$field->value}
         $repository = new Repository($relation->entity, $locator);
         $entity = $repository->findById($reference);
         $this->reflector->addField(new Field(['name' => $basename, 'type' => 'relationData', 'value' => $entity]));
         return $entity;
     });
 }