9

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

例如

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

在另一个字段上声明默认顺序或者完全覆盖获取行为会非常方便。

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

4

3 回答 3

10

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

如果它是表本身中字段的排序顺序,请添加:

options:
  orderBy: fieldname

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

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

orderBy: fieldname
于 2011-01-28T14:06:13.783 回答
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 中指定它,我无法正常工作。

于 2011-01-26T23:41:52.623 回答
0

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

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

于 2011-01-26T22:41:08.613 回答