1

Doctrine は私のクラスのリポジトリを作成し、任意の行でソートされたすべての要素のリストを取得するために、次のメンバーを作成しました。

class NoteRepository extends EntityRepository {
    public function findAllOrderedByRow($row, $order = 'ASC') {
        if ( 'DESC' != strtoupper($order) ) {
            $order  = 'ASC';
        }

        if ( property_exists('Namespace\Entity', $row) ) {
            return $this->getEntityManager()
                ->createQuery('SELECT o FROM Entity o ORDER BY o. ' . $row . ' ' . $order)
                ->getResult();
        }

        return null;
    }
}

私の質問は、これが良いアプローチなのか、それともソート可能なすべての行に関数を追加する方が良いのかということです. そして、それをそのように使用することは保存されますか? 注射の仕方がわかりません。でも、見落としていたのかもしれません。

どうもありがとう、フィリップ

4

1 に答える 1

4

と呼ばれる EntityRepository で使用可能な関数がありますfindBy。2 番目のパラメーターとして注文を渡すことができます。

public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

そしてちょっとした例:

$this->getDoctrine()->getRepository('User')->findBy(
    array(), 
    array('email' => 'asc')
);

この動作をオーバーライドすることは、私の観点では役に立ちません。

于 2012-06-18T15:28:00.570 に答える