Cakephp模型virtualFields无效

时间:2018-03-14 15:43:48

标签: cakephp entities cakephp-3.4

我已经有一些虚拟字段在处理我的应用程序,但是这个字体让我大吃一惊。

所以我有实体SubactivitySlots,代码如下:

protected $_virtual = [
    'slots_text',
];

protected function _getSlotsText(){
    return "test";
}

当我运行查询时:

debug($this->SubactivitySlots->find('all')->first());

它返回以下结构(尝试使用first和toArray()

object(App\Model\Entity\SubactivitySlot) {

'id' => (int) 1,
'name' => 'MAIN',
'description' => '-',
'activity_id' => (int) 1,
'subactivity_min' => (int) 1,
'subactivity_max' => (int) 1,
'position' => (int) 1,
'institution_id' => (int) 1,
'deleted' => (int) 0,
'[new]' => false,
'[accessible]' => [
    '*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [
    (int) 0 => 'slots_text'
],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'SubactivitySlots'

}

任何可能出错的线索?我花了很多时间试图发现并且无法找到答案。最奇怪的是,我在其他实体上使用虚拟字段并且它正在工作。

由于

1 个答案:

答案 0 :(得分:2)

如果我没错,蛋糕直到3.5.13才调试虚拟字段。

在蛋糕3.4中,当“将实体转换为数组或JSON ”(来自here)而不是调试模式时,使用$_virtual属性。

因此,即使您在调试时没有看到它们,也应该在使用JSON转换实体时看到它们

无论如何这应该在3.5.13中有所改变(参见博客here)所以如果你能升级就会解决问题