Я использую Doctrine с MongoDB.Обычно мне нет дела до идентификаторов, но в одном случае мне нужен идентификатор до сброса, чтобы избежать ненужной поездки туда и обратно.Поэтому я добавил стратегию идентификатора «NONE» и установил идентификатор в конструкторе. Но после этого я не могу загрузить документ по его идентификатору.
Код для загрузки документа:
/* @var $userRepo DocumentRepository */
$userRepo = $managerRegistry->getRepository(User::class);
$qb = $userRepo->createQueryBuilder();
$qb->field('id')->in(['5cb6377ae0b68801bc3b1771']);
$user = $qb->getQuery()->execute()->getSingleResult();
var_dump($user instanceof User);
/* @var $userRepo DocumentRepository */
$userRepo = $managerRegistry->getRepository(User::class);
$users = $userRepo->findBy(['id' => '5cb6377ae0b68801bc3b1771']);
var_dump(count($users) === 1);
/* @var $userRepo DocumentRepository */
$userRepo = $managerRegistry->getRepository(User::class);
$user = $userRepo->find('5cb6377ae0b68801bc3b1771');
var_dump($user instanceof User);
(На самом деле false, false, false - ожидаемый true,верно, верно)
Документ:
/**
* @ODM\Document
*/
class User
{
/**
* @ODM\Id(strategy="NONE")
*/
protected $id;
public function __construct()
{
$this->id = new \MongoId();
}
...
}