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; }