Cakephp 模型 virtualFields 不工作

Cakephp model virtualFields not working

我的应用程序中已经有一些虚拟字段在工作,但这个让我心烦意乱。

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

protected $_virtual = [
    'slots_text',
];

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

当我运行查询时:

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

它 returns 我有以下结构(尝试使用 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'

}

有什么问题的线索吗?我花了很多时间试图发现但无法找到。最奇怪的是我在另一个实体上使用虚拟字段并且它正在工作。

谢谢

如果我没记错的话,cake 在 3.5.13 之前不会调试虚拟字段。

在 cake 3.4 中,$_virtual 属性 用于“将实体转换为数组或 JSON”(来自 here) 但不是在调试模式下。

因此,即使您在调试时看不到它们,您也应该在 JSON

中转换实体时看到它们

无论如何这应该在 3.5.13 中有所改变(请参阅博客 here)所以如果您可以升级问题将得到解决