迁移到CakePHP 4.4中Entity问题中的undefined方法

fv2wmkja  于 6个月前  发布在  PHP
关注(0)|答案(2)|浏览(79)

我正在从CakePHP 3.10迁移到CakePHP 4.4。我的代码在以前版本的框架中运行良好。此时,我在控制器中调用时出现错误:“调用未定义的方法App\Model\Myrty\A1::getMyValue()”:$test->getMyValue()。$test是正确的App\Model\Myrty\A1 Object。什么是不正确的?以下是我的实体类:

namespace App\Model\Entity;

use Cake\ORM\Entity;

class A1 extends Entity{
   protected $_accessible = ['*' => true,];
     
   protected function _getMyValue(){
      return 'AAA';
   }
}

字符串

30byixjq

30byixjq1#

如果公共方法对你的用例足够的话,尝试使用公共方法(而不是“魔术”虚字段),因为它只是简单的PHP,没有来自CakePHP的任何魔力。

public function getMyValue() {
    return 'AAA';
}

字符串
如果您需要使用虚拟字段,请通过以下方式访问它:_getMyValue()->通过调用->my_value https://book.cakephp.org/4/en/orm/entities.html#creating-virtual-fields访问

cotxawn7

cotxawn72#

我认为这本食谱中有一个陷阱。相同的页面但不同的主题。如果你想访问虚拟字段,你必须在实体类中使用$_virtual暴露它:

<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;

class A1 extends Entity{
   protected $_accessible = ['*' => true,];
   protected $_virtual = ['my_value'];
     
   protected function _getMyValue(){
      return 'AAA';
   }
}

字符串
https://book.cakephp.org/4/en/orm/entities.html#exposing-virtual-fields

相关问题