Doctrine Model的默认排序属性

时间:2011-01-26 22:37:05

标签: php doctrine doctrine-1.2

我想知道是否有办法声明我的学说模型的默认顺序。

e.g。

我有一个work模型,它有photos。加载作品时,与其关联的所有照片都会加载到$work->photos。当我显示它们时,它们按其ID排序。

在另一个字段上声明默认订单或者覆盖提取行为altCHhether非常方便。

我宁愿不将照片转换为数组并使用usort。感谢。

3 个答案:

答案 0 :(得分:10)

您可以在YAML中指定它,如下所示:

如果它是表格中字段的排序顺序,则添加:

options:
  orderBy: fieldname

其中options:与您拥有columns:relations:条目的深度相同。注意:orderBy:的大写是至关重要的;弄错了,你不会得到任何错误但也没有排序。

如果它是关系的排序顺序,那么在关系中你可以跳过options:部分并输入:

orderBy: fieldname

答案 1 :(得分:4)

好的,我感谢这篇文章:http://www.littlehart.net/atthekeyboard/2010/02/04/sorting-relationship-results-in-doctrine-1-2-2/

就我而言,BaseWork.php文件有这样的修改:

public function setUp()
    {
        parent::setUp();
        $this->hasMany('Photo as photos', array(
             'local' => 'id',
             'orderBy' => 'display_order',
             'foreign' => 'work_id'));

无论如何,最好在schema.yml中指定它,这是我无法工作的。

答案 2 :(得分:0)

我不知道关于教义的第一件事,但看起来你可以在调用create()时指定order by子句。

http://www.doctrine-project.org/documentation/manual/1_0/en/dql-doctrine-query-language:order-by-clause