Doctrine2是否具有与ActiveRecord的named scopes类似的功能?
最佳答案
没有人融入D2中,但是使用Doctrine 2的QueryBuilder类来实现与Yii相似的系统可能不会花费太多精力,它允许您使用更具编程性的方法分段构建查询方法。
$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();
}
}
解决此问题的方法可能有几种,因此仅是一个简单示例。困难的部分可能是弄清楚如何处理标准冲突。
关于php - Doctrine2是否有命名示波器的模拟物?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4179452/