【发布时间】:2013-10-18 16:22:46
【问题描述】:
我目前在beforeFind() 中附加一个虚拟字段,因为我需要将当前用户的ID 插入到查询中。在相关模型上调用 find 并包含此模型包括静态定义的虚拟字段,但不包括 beforeFind().. 中的虚拟字段。直接在模型上调用 find 包括动态附加的虚拟字段。
这是我的 beforeFind 回调:
public function beforeFind($query = array()) {
$user_id = $this->getCurrentUser()['id'];
$this->virtualFields = array_merge($this->virtualFields, array(
'cost_for_user' => sprintf('CASE WHEN Inventory.user_id = %s THEN Inventory.cost ELSE Inventory.cost_for_team END', $user_id),
));
return $query;
}
由于cost_for_user 动态附加在 beforeFind 中,我无法在运行时复制虚拟字段,就像cookbook 中建议的那样。是否有更好的回调来动态附加虚拟字段以便包含在包含结果中?
【问题讨论】:
标签: php cakephp containable cakephp-2.4