Есть ли в Doctrine2 функции, аналогичные именные области?
Есть ли аналог именованной области видимости для Doctrine2?
comment
Также в Yii framework есть yiiframework.com/doc/guide /1.1/en/database.ar#named-scopes
- person Koc   schedule 14.11.2010
Ответы (2)
В D2 его нет, но, вероятно, было бы несложно реализовать систему, аналогичную Yii, используя QueryBuilder, который позволяет создавать запросы по частям, используя более программный подход.
$qb = $em->createQueryBuilder;
$qb->select('u')
->from('User', 'u')
->where('active IS NOT NULL);
Похоже, что реализация Yii хранит критерии запроса в массиве, и они внедряются в запрос, когда используется именованная область. Вы можете легко сделать нечто подобное, возвращающее объект QueryBuilder с предварительно загруженными параметрами.
class UserRepository extends EntityRepository
{
private $_namedScopes;
public getActiveUsersWhoLoggedInLastWeek()
{
// return a query builder for this model
$qb = $this->_namedScopes->initScope();
// start adding pre-defined criteria
$qb = $this->_namedScopes->addScope($qb, 'active')
$qb = $this->_namedScopes->addScope($qb, 'lastWeek');
return $qb->getQuery()->getResult();
}
}
Вероятно, есть несколько разных способов приблизиться к этому, так что это всего лишь один быстрый пример. Трудная часть, вероятно, будет заключаться в том, чтобы выяснить, как обрабатывать коллизии критериев.
person
Bryan M.
schedule
15.11.2010