Symfony2 - EntityRepository - 排序行 - 这是一个很好的保存方法吗?

时间:2012-06-18 13:49:41

标签: symfony doctrine-orm

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;
    }
}

我的问题是,这是一个好的方法还是为所有可排序的行添加函数更好?这样就可以节省吗?我没有看到注射的方法。但也许我忽略了它。

非常感谢, 菲利普

1 个答案:

答案 0 :(得分:4)

EntityRepository中有一个名为findBy的函数。您可以通过第二个参数传递订单。

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

还有一个例子:

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

在我看来,覆盖这种行为毫无用处。