/** * Map targets to entities * * @param array $entities * @param array $targets */ protected function map($entities, $targets) { $identifier = $this->targetMetadata->getIdentifier(); foreach ($targets as $target) { $id = $this->targetMetadata->getValue($target, $this->keyTo, true); foreach ($entities as $entity) { if ($id == $this->metadata->getValue($entity, $this->keyFrom, true)) { $value = $this->metadata->getValue($entity, $this->name); if (is_array($value)) { $value[$this->targetMetadata->getValue($target, $identifier)] = $target; } else { $value = $target; } $this->metadata->setValue($entity, $this->name, $value); } } } }
/** * Dispatches an event to all registered listeners. * * @param string $name * @param Metadata $metadata * @param array $arguments * @return bool */ public function trigger($name, Metadata $metadata, array $arguments) { $this->events->trigger("{$metadata->getEventPrefix()}.{$name}", $arguments); }
/** * Subscribes model lifecycle callbacks. * * @param Metadata $metadata */ protected function subscribe(Metadata $metadata) { foreach ($metadata->getEvents() as $event => $methods) { foreach ($methods as $method) { $this->events->on($metadata->getEventPrefix() . '.' . $event, [$metadata->getClass(), $method]); } } }