public function registerEvents(Events $events) { parent::registerEvents($events); $key = 'events'; $events->addCallbackListener($events::HYDRATE_BEFORE, function (EventArguments $args) use($key) { $data = json_decode($args->data[$key], TRUE); $events = []; foreach ($data as $row) { $event = new $row['_class'](); unset($row['_class']); foreach ($row as $prop => $val) { $event->{$prop} = $val; } $events[] = $event; } $args->data[$key] = $events; }); $events->addCallbackListener($events::SERIALIZE_BEFORE, function (EventArguments $args) use($key) { $args->values[$key] = json_encode($args->values[$key] ?: []); }); }
public function createManyToManyMapper($param, IRepository $targetRepository, $targetParam) { /** @var DibiManyToManyMapper $mtm */ $mtm = parent::createManyToManyMapper($param, $targetRepository, $targetParam); if ($targetRepository instanceof SubjectsRepository) { $mtm->table = 'editors_x_subjects'; $mtm->parentParam = 'user_id'; $mtm->childParam = 'subject_id'; } else { if ($targetRepository instanceof SchemasRepository) { $mtm->table = 'editors_x_schemas'; $mtm->parentParam = 'user_id'; $mtm->childParam = 'schema_id'; } else { if ($targetRepository instanceof BlocksRepository) { $mtm->table = 'editors_x_blocks'; $mtm->parentParam = 'user_id'; $mtm->childParam = 'block_id'; } } } return $mtm; }
public function findAll() { return parent::findAll()->orderBy('position', 'ASC'); }