gpt4 book ai didi

php - CakePHP 2.0 - virtualFields 不用于带选项的查找操作

转载 作者:行者123 更新时间:2023-11-29 14:34:52 25 4
gpt4 key购买 nike

我正在使用 CakePHP 2.0,并且我有一个带有“virtualFields”的模型:

国家/地区.php:

var $virtualFields = array(
'path' => "CONCAT_WS('/', dirname, basename)"
);

如果我在使用“用户”的 Controller 中执行此操作

$users = $this->User->find('all');

虚拟字段路径已设置。

如果我在我的 Controller 中使用它,它也使用“用户”

$options['fields'] = array(
'DISTINCT User.*'
);
$options['joins'] = array(
array(
'table' => 'courses',
'type' => 'inner',
'conditions' => array(
'User.id = courses.user_id'
)
),
array(
'table' => 'times',
'type' => 'inner',
'conditions' => array(
'courses.id = times.course_id'
)
)
);
$options['conditions'] = array(
'times.amount > ' => 0
);

$users = $this->User->find('all', $options);

有了选项,path字段就没有设置了,当然SQL查询中好像没有包含“CONCAT_WS('/', dirname, basename)”字段,也就是如果我在没有选项的情况下执行 find 操作,则包含在内。

如何使用这些选项来自动包含虚拟字段?当然,我可以在 fields 选项中写入 CONCAT,但这不是很好,特别是如果我更改它。

致以诚挚的问候。

最佳答案

使用分组而不是不同,并完全删除字段选项。

$options['group'] = array(
'User.*'
);
$options['joins'] = array(
array(
'table' => 'courses',
'type' => 'inner',
'conditions' => array(
'User.id = courses.user_id'
)
),
array(
'table' => 'times',
'type' => 'inner',
'conditions' => array(
'courses.id = times.course_id'
)
)
);
$options['conditions'] = array(
'times.amount > ' => 0
);

$users = $this->User->find('all', $options);

关于php - CakePHP 2.0 - virtualFields 不用于带选项的查找操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com