我在CakePHP 3(3.0.13)中编写了一个非常简单的应用程序,我想知道我是否可以做一些简单,更好的事情。

我实质上是在编写问题跟踪器,以关注问题和工作。我有一个称为优先级的表,其中包含每个级别的唯一ID和名称,例如Low,Medium和High。我的问题是,虽然我已按希望它们的出现顺序将它们添加到数据库中,但它们却按字母顺序出现,即高,低,中。

在我的问题控制器的添加函数中(例如),我可以更改以下内容:
$priorities = $this->Issues->Priorities->find('list');
...至:
$priorities = $this->Issues->Priorities->find('list', ['order' => 'Priorities.id ASC']);
...但是我不想在所有我想使用优先级列表的地方都这样做。

我想象有一种在模型中指定此值的DRY方法,可以有效地设置默认值以供其他地方使用,但是如果存在,我将找不到它。

最佳答案

您可以覆盖Table::findList()类中的PrioritiesTable,然后将订单条件添加到查询中,例如

public function findList(Query $query, array $options)
{
    $query = parent::findList($query, $options);
    return $query->order(['Priorities.id' => 'ASC']);
}

也可以看看
  • API > \Cake\ORM\Table::findList()
  • 10-06 09:25