我知道如何使用查询构建器设置字段的别名。
http://book.cakephp.org/3.0/en/orm/query-builder.html#selecting-data
我知道还有另一种使用虚拟字段的方法
http://book.cakephp.org/3.0/en/orm/entities.html#creating-virtual-fields
我不想使用虚拟字段。
我想动态地在控制器级别为分页查询的字段设置别名。与我在使用查询构建器时设置别名的方式类似。
我如何做到这一点?
我实际上是在Crud插件中使用它。
所以代码目前看起来像这样
$this->Crud->on('beforePaginate', function(Event $event) use ($conditions) {
$this->paginate['conditions'] = $conditions;
$this->paginate['limit'] = 100;
$this->paginate['fields'] = [
'Events.id', 'Events.title', 'Events.start_date',
'Events.end_date', 'Events.revenue', 'Events.total_costs', 'Events.collections'
];
});
return $this->Crud->execute();
$this->Crud->on('beforePaginate', function(Event $event) use ($conditions) {
$this->paginate['conditions'] = $conditions;
$this->paginate['limit'] = 100;
$query = $this->Events->find()->select([
'start' => 'start_date',
'end' => 'end_date',
'id', 'title', 'revenue', 'total_costs', 'collections'
]);
$this->paginate($query);
});
好像选择根本不起作用。我找回了所有 Events
答案 0 :(得分:1)
我如何做到这一点?
在key => value
选项中使用fields
语法,例如
$this->paginate = [
'fields' => [
'non_aliased_field',
'alias' => 'field',
// ...
]
];
fields
选项值将传递给Query::select()
,因此您可以使用相同的语法。