Doctrine2 是否具有类似于 ActiveRecord 的命名范围的功能?
问问题
1325 次
2 回答
2
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();
}
}
可能有几种不同的方法可以解决这个问题,所以这只是一个简单的例子。困难的部分可能是弄清楚如何处理标准冲突。
于 2010-11-15T17:23:29.060 回答
0
于 2010-11-28T21:02:18.770 回答