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. 您可以将订单作为第二个参数传递。

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 回答