我正在用Symfony 3从一个已有8年多的项目中开发一个web应用程序。因此,我继承了一个现有的模型。
一些实体具有此字段
/**
* @var integer
*
* @ORMColumn(name="FourID_Site", type="bigint", nullable=true)
*/
private $fouridSite;
还有一些有
/**
* @var FourListe
*
* @ORMManyToOne(targetEntity="FourListe")
* @ORMJoinColumns({
* @ORMJoinColumn(name="FourID_Site", referencedColumnName="FourID")
* })
*/
private $fouridSite;
我有一个方法,在所有的持久化和刷新原则方法之前被调用,用于自动更新一些字段。
if (property_exists(get_class($entity), 'fouridSite')) {
$entity->setFouridSite($this->current_user->getFouridSiteutilisateur());
}
if (property_exists(get_class($entity), 'majlogin')) {
$entity->setMajlogin($this->current_user->getLogin());
}
if (property_exists(get_class($entity), 'majdate')) {
$entity->setMajdate(new DateTime());
}
问题:当$fouridSite
是整数时,此代码引发错误,因为当条令需要整数时,我无法分配实体($this->current_user->getFouridSiteutilisateur()
返回FourListe
实体)。这很正常。
本机php方法get-type()在这种情况下不能使用,因为它返回NULL。
https://php.net/gettype
所以,有一种方法可以通过注释来知道$fourisSite
是实体还是整数?
谢谢你的想法或潜力,有什么建议吗?
根据更新挂钩的位置,您可以使用它来了解列的类型:
$em = $this->get('doctrine')->getManager();
$metadata = $em->getClassMetadata(get_class($entity));
$fieldMetadata = $metadata->fieldMappings['fouridSite'];
// Catch the type
$fieldType = $fieldMetadata['type'];
然后在该类型上添加一些检查,以注册正确的值
希望您可以通过您的方法访问条令服务。