与父类的财产冲突
我有这个类ZghFEBundleEntityUser
,它扩展了FOSUserBundleModelUser
。
use FOSUserBundleModelUser as BaseUser;
class User extends BaseUser implements ParticipantInterface
{
use BasicInfo;
// ..
}
和BaseUser
类:
abstract class User implements UserInterface, GroupableInterface
{
protected $id;
// ..
}
和BaseInfo
特性:
trait BasicInfo
{
/**
* @ORMColumn(type="string", length=255)
* @ORMId
* @ORMGeneratedValue(strategy="NONE")
*/
protected $id;
// ..
}
但是当我运行我的代码时,我得到这个错误:
严格标准:FOS UserBundle Model User和Zgh FEBundle Model Partial BasicInfo在Zgh FEBundle Entity User的组合中定义相同的属性($ id)。 这可能是不兼容的,请考虑在特征中使用访问器方法。
我正在使用Symfony框架。
无论如何解决特质和父类对象之间关于这个属性的冲突?
不,不可能通过使用Trait重写映射的属性。
另外,可能的选择是使用多个抽象实体类,并根据需要扩展您的子实体。
即
<?php
use FOSUserBundleModelUser as BaseUser;
abstract class AbstractStrategyNoneEntity extends BaseUser
{
/**
* @ORMColumn(type="string", length=255)
* @ORMId
* @ORMGeneratedValue(strategy="NONE")
*/
protected $id;
}
abstract class AbstractStrategyAutoEntity extends BaseUser
{
/**
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*
*/
protected $id;
}
并将其中的一个扩展到您的子实体中。
/**
* @ORMEntity
*/
class Child extends AbstractStrategyNoneEntity
{
// Inherited mapping
}
希望这回答你的问题。
链接地址: http://www.djcxy.com/p/11905.html