jon*_*oni 5 php cakephp cakephp-1.3
我有一个模型Employee,它属于一个地址模型。当我从员工模型中获取数据时,关联的地址记录也将被获取。此外,地址模型具有virtualField full_name。看起来像这样:
Array
(
[0] => Array
(
[Employee] => Array
(
[id] => 1
[address_id] => 33
[username] => ...
...
)
[Address] => Array
(
[id] => 33
[firstname] => Blah
[full_name] => Blah Blubb
...
)
)
[1] => Array (
[Employee] => Array (
[id] => 2
...
Run Code Online (Sandbox Code Playgroud)
我也想将此virtualField包含在数据数组的Employee部分中,例如
Array (
[0] => Array (
[Employee] => Array
(
[id] => 1
[full_name] => Blah Blubb
...
)
Run Code Online (Sandbox Code Playgroud)
Tis不可能通过添加来解决
$virtualFields = array(
'full_name' => 'CONCAT_WS(" ", Address.firstname, Address.surname)',
);
Run Code Online (Sandbox Code Playgroud)
对员工的模式,如食谱规定 ,提出的解决方案(“从一个模式到另一个运行时复制virtualFields当你需要访问他们”),但我不明白这一点的解决方案。我该在哪里放置?在控制器中?在模型中的查找功能?
感谢帮助
我现在在 afterFind 模型回调函数中手动执行此操作:
array_walk($results,function(&$a){
if(isset($a['Address']['full_name'])) {
$a['Employee']['full_name'] = $a['Address']['full_name'];
unset($a['Address']);
}
});
Run Code Online (Sandbox Code Playgroud)
可能这不太好,但它确实有效。