【问题标题】:Order 'Contain' Model in CakePHP 3.x在 CakePHP 3.x 中订购“包含”模型
【发布时间】:2016-11-07 08:20:12
【问题描述】:

我在AnotherThing 中有多个Things 现在我正尝试在我的AnotherThing Controller 的编辑操作中对它们进行排序 - 我可以在我的编辑中访问Things,但我想对它们进行不同的排序(不超过他们的 ID),例如Things.pos

这里的最佳做法是什么?我试过了

public $hasMany = array(
        'Thing' => array(
            'order' => 'Thing.pos DESC'
        )
    );

但没有任何改变。有什么想法吗?

【问题讨论】:

    标签: model cakephp-3.x contain


    【解决方案1】:

    如果您在关联表中定义了一些自定义查找器方法,则可以在 contain() 中使用它们。对于你的情况,你可以像下面这样解决这个问题:

    $query->contain([
            'Comments' => function ($q) {
               return $q->order(['created'=>'DESC']);
            }
        ]);
    

    【讨论】:

      【解决方案2】:

      重读文档。对不起!

      无论如何,如果有人在寻找答案,这里是: http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#sorting-contained-associations

      编辑:

      加载 HasMany 和 BelongsToMany 关联时,可以使用 用于对这些关联中的数据进行排序的排序选项:

      $query->contain([
          'Comments' => [
              'sort' => ['Comment.created' => 'DESC']
          ]
      ]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 2016-11-23
        • 2012-07-06
        • 2021-04-16
        • 1970-01-01
        • 2011-07-17
        • 2017-08-14
        相关资源
        最近更新 更多