gpt4 book ai didi

php - Doctrine2 是否有命名范围的类似物?

转载 作者:行者123 更新时间:2023-11-29 09:16:06 24 4
gpt4 key购买 nike

Doctrine2 是否有类似于 ActiveRecord 的功能 named scopes

最佳答案

D2 中没有内置系统,但使用 Doctrine 2 的 QueryBuilder 实现类似于 Yii 的系统可能不会太困难。类,它允许您使用更具编程性的方法分段构造查询。

 $qb = $em->createQueryBuilder;
$qb->select('u')
->from('User', 'u')
->where('active IS NOT NULL);

看起来 Yii 的实现将查询条件存储在数组中,并且在使用命名范围时将它们注入(inject)到查询中。您可以轻松地执行类似的操作,返回预加载这些参数的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com