0

Doctrine2 には ActiveRecord の名前付きスコープに似た機能がありますか?

4

2 に答える 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();
   }
}

これにアプローチする方法はおそらくいくつかあるので、これは簡単な例の1つにすぎません。難しい部分は、おそらく基準の衝突を処理する方法を理解することでしょう。

于 2010-11-15T17:23:29.060 に答える
0

http://www.doctrine-project.org/jira/browse/DDC-750

于 2010-11-28T21:02:18.770 に答える