Php Symfony2-数据库签入实体回调函数

Php Symfony2-数据库签入实体回调函数,php,mysql,symfony,doctrine,Php,Mysql,Symfony,Doctrine,我正在使用Symfony 2.7.6版。我已经创建了一个名为EmployeeBasicInfo的实体,其中包含字段 名字 姓氏 识别码等 我创建了一个回调函数,用于验证EmployeeBasicInfo实体本身中的标识码 /** * @Assert\Callback(groups={"edit_myinfo"}) */ public function validateIdentificationCode(ExecutionContextInterface $c

我正在使用Symfony 2.7.6版。我已经创建了一个名为EmployeeBasicInfo的实体,其中包含字段

名字 姓氏 识别码等

我创建了一个回调函数,用于验证EmployeeBasicInfo实体本身中的标识码

    /**
     * @Assert\Callback(groups={"edit_myinfo"})
     */
    public function validateIdentificationCode(ExecutionContextInterface $context)
    {

        if ($this->getEmployeeIdentificationCode() == 10) {

            $context->buildViolation('Identification code exists!')
                ->atPath('employeeFirstName')
                ->addViolation();


        }
    }
我想重新定义具有数据库检查的相同函数。问题是我无法在此函数中查询数据库。我试过使用$this->getDoctrine()->getManager();等等。但失败了。和我用codeigniter和yii制作的圆顶一样。请帮我一个忙


这就是我试图调用类的名为“getDoctrine”的未定义方法时遇到的错误“XXX\EmployeeBundle\Entity\EmployeeBasicInfo

您做错了。实体应该尽可能简单,应该没有逻辑。您应该将数据库签出实体移动到某个服务,在那里注入
doctor
,并在服务内部进行检查


您得到的错误只是说您试图调用实体中不存在的方法
getDoctrine
(没关系,您的实体不应该有这样的方法)

我已经有一个服务app.util,其中包含一个函数。我从这个实体调用它,比如$this->get('app.util')->test()。同样的,我也会遇到一些错误,您是否将您的服务注入到实体中?如果没有,您的实体对您的服务或条令一无所知,这就是为什么会出现错误。您不应该在实体中使用此功能,但在服务中是创建服务、为dorctrine配置服务和在实体中注入服务的任何参考链接???我对symfony不熟悉。。请帮助我…这占用了我很多时间不,因为您不应该向entityTo注入任何内容要澄清的是,您在
validateIdentificationCode
中添加了
$this->getDoctrine()->getManager()
,它抛出了此异常?您的实体
EmployeeBasicInfo
是(我假设)一个POPO(普通的旧PHP对象),因此不会从任何
ContainerWare
父对象继承。您必须将
EntityManager
注入您的实体,尽管我认为这不是最佳实践。有趣的问题…可能是重复的