CakePHP:包含与模型相关的数据字段的虚拟字段

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当你需要访问他们”),但我不明白这一点的解决方案。我该在哪里放置?在控制器中?在模型中的查找功能?

感谢帮助

jon*_*oni 2

我现在在 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)

可能这不太好,但它确实有效。