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;
}
}
我的问题是,这是一个好的方法还是为所有可排序的行添加函数更好?这样就可以节省吗?我没有看到注射的方法。但也许我忽略了它。
非常感谢, 菲利普
答案 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')
);
在我看来,覆盖这种行为毫无用处。