Doctrine CouchDB ODM: как получить документ, если вы не знаете его тип - PullRequest
1 голос
/ 28 февраля 2012

Так что я не знаю тип документа, который я хочу получить, и поэтому не знаю, как извлечь этот документ в доктрине. Обычно я хотел бы сделать что-то подобное:

$dm->find('User', 12345);

И я должен получить класс User. Но что, если я не знаю тип документа? Он хранится в документе, поэтому Доктрина должна это выяснить. Я должен простой звонок

$dm->find(12345); //of course this doesn't work

и Doctrine должны просмотреть поле типа в документе и вернуть класс User.

Конечно, я могу сделать это вручную, но, может быть, есть метод Доктрины для этой проблемы?

Итак, мой вопрос: как извлечь (используя доктрину) документ и создать экземпляр правильного класса (в зависимости от поля «тип», найденного в документе)?

1 Ответ

1 голос
/ 18 марта 2012

Я думаю, что обычно вам нужно разработать представление для каждого логического типа данных, на которые вы хотите посмотреть, где бы они ни находились в графе документа.

В противном случае вы могли бы написать представление, которое просматривает каждый документ, рекурсивно просматривая каждое свойство, и найти значение 12345, но, конечно, это, вероятно, будет очень медленно.

Представления могут просматривать ваше свойство type (которое является утка, печатающее ) и emit() правильный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...