如何为所有控制器只订购一次数据?
How do I order data once only for all controllers?
我正在用 CakePHP 3 (3.0.13) 编写一个非常简单的应用程序,我想知道我是否可以做一些简单、更好的事情。
我实际上是在编写一个问题跟踪器来掌握问题和工作。我有一个名为 priorities 的 table 包含每个级别的唯一 ID 和名称,例如低、中和高。我的问题是,虽然我按照我希望它们出现的顺序将它们添加到数据库中,但它们是按字母顺序出现的,所以高、低、中。
在我的 Issue 控制器的添加函数中(例如)我可以更改以下内容:
$priorities = $this->Issues->Priorities->find('list');
...至:
$priorities = $this->Issues->Priorities->find('list', ['order' => 'Priorities.id ASC']);
...但我不想在任何我想使用优先级列表的地方都这样做。
我想有一种 DRY 方式来指定它(在模型中?)它有效地设置了用于其他地方的默认值,但如果有的话,我找不到它。
您可以在 PrioritiesTable
class 中覆盖 Table::findList()
,并将您的订单条件添加到查询中,例如
public function findList(Query $query, array $options)
{
$query = parent::findList($query, $options);
return $query->order(['Priorities.id' => 'ASC']);
}
另见
我正在用 CakePHP 3 (3.0.13) 编写一个非常简单的应用程序,我想知道我是否可以做一些简单、更好的事情。
我实际上是在编写一个问题跟踪器来掌握问题和工作。我有一个名为 priorities 的 table 包含每个级别的唯一 ID 和名称,例如低、中和高。我的问题是,虽然我按照我希望它们出现的顺序将它们添加到数据库中,但它们是按字母顺序出现的,所以高、低、中。
在我的 Issue 控制器的添加函数中(例如)我可以更改以下内容:
$priorities = $this->Issues->Priorities->find('list');
...至:
$priorities = $this->Issues->Priorities->find('list', ['order' => 'Priorities.id ASC']);
...但我不想在任何我想使用优先级列表的地方都这样做。
我想有一种 DRY 方式来指定它(在模型中?)它有效地设置了用于其他地方的默认值,但如果有的话,我找不到它。
您可以在 PrioritiesTable
class 中覆盖 Table::findList()
,并将您的订单条件添加到查询中,例如
public function findList(Query $query, array $options)
{
$query = parent::findList($query, $options);
return $query->order(['Priorities.id' => 'ASC']);
}
另见