Как я уже сказал в заголовке, я хочу преобразовать объект в идентификатор (int / string) и обратно из идентификатора в объект.Обычно я работал бы с отношениями сущностей, но в этом случае я не знаю другой сущности / связки, и он должен работать независимо.
Я думаю, я мог бы использовать для этого типы отображения доктрин, но как я могу внедритьмой пользовательский загрузчик объектов?Поэтому, возможно, я могу использовать обратный вызов для извлечения данных.
Вот моя идея (псевдокод):
class User {
public function getId() { return 'IAmUserBobAndThisIdMyId'; }
}
class Meta {
private $user; // <== HERE I NEED THE MAGIC
public function setUser($user) { $this->user = user; }
}
$user = new User();
$meta = new Meta();
$meta->setUser($user);
$em->persist($meta); // <== HERE THE MAPPING TYPE SHOULD CONVERT THE ENTITY
Знаю, что я хочу, чтобы объект в моей базе данных был таким: user:IAmUserBobAndThisIdMyId
И в обратном направлении:
$meta = $repository->findOneById(1); // HERE I NEED THE MAGIC AGAIN
$user = $meta->getUser();
echo $user->getId();
// output: IAmUserBobAndThisIdMyId
Пока все очень просто ... Но сейчас мне нужно немного логики и доступа к базе данных, чтобы восстановить эту сущность.Загрузка проста, , но как я могу вставить это в мой класс типа отображения ?
Я прочитал документацию доктрины , и мне было интересно, смогу ли я использоватьменеджер событий я получаю из AbstractPlatform $platform
через параметр.Или, может быть, есть лучший способ?