尽管OP的答案是正确的,但它并不完整。下面我做了什么以及为什么。
创建自己的用户实体。AbstractEntity 是用于我所有实体的一种,仅包含 ID 属性、getter/setter 和一些用于实体调试的全局功能。
用户.php
use Doctrine\ORM\Mapping as ORM;
use Keet\Mvc\Entity\AbstractEntity;
use ZfcUser\Entity\UserInterface;
/**
* Entity Class representing a post of our User module.
*
* @ORM\Entity
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="Keet\User\Repository\UserRepository")
* @ORM\HasLifecycleCallbacks
*/
class User extends AbstractEntity implements UserInterface
{
/**
* @var string
* @ORM\Column(name="username", type="string", length=255, unique=true, nullable=false)
*/
protected $username;
/**
* @var string
* @ORM\Column(name="email", type="string", length=255, unique=true, nullable=false)
*/
protected $email;
/**
* @var string
* @ORM\Column(name="display_name", type="string", length=255, nullable=false)
*/
protected $displayName;
/**
* @var string
* @ORM\Column(name="`password`", type="string", length=255, nullable=false)
*/
protected $password;
/**
* @var int
* @ORM\Column(name="state", type="integer", length=3, nullable=false)
*/
protected $state = 1;
// Getters/Setters
}
zfcuser.config.php
包含与OP 的答案相同的配置:
'zfcuser' => [
//Some other config
'userEntityClass' => User::class,
'EnableDefaultEntities' => false,
],
模块.config.php
重要提示:覆盖 zfcuser 的默认学说实体配置!
'doctrine' => [
'orm_autoload_annotations' => true,
'driver' => [
__NAMESPACE__ . '_driver' => [
'class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver',
'cache' => 'array',
'paths' => [
__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'src'
. DIRECTORY_SEPARATOR . 'Entity',
]
],
'orm_default' => [
'drivers' => [
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver',
'ZfcUser\Entity' => __NAMESPACE__ . '_driver'
],
],
'zfcuser_entity' => [ // Section overwrites the default config for location of Annotation. Original found
// in vendor ZfcUserDoctrineModule /config/xml/zfcuser/ZfcUser.Entity.User.dcm.xml
'class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver',
'paths' =>
__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'src'
. DIRECTORY_SEPARATOR . 'Entity',
],
],
],
在上面你通常只有'driver'
and 'orm_default'
配置。ZfcUser 模块包含一个'zfcuser_entity'
配置,但将其指向它自己的模块中的驱动程序。要没有对不同驱动程序的浮动引用,请将其覆盖并将其指向您自己定义的驱动程序,由__NAMESPACE__ . '_driver'
. 此外,在我的示例中,我使用了AnnotationDriver
for reading 注释,而 ZfcUser 模块使用了XmlDriver
. ZfcUser 模块配置如下
这是原始配置,在上面的示例中被覆盖
'zfcuser_entity' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\XmlDriver',
'paths' => __DIR__ . '/xml/zfcuser'
),
此配置允许您完全使用自己的实体,但仍使用 ZfcUser 模块。
在我的情况下,我可以将我自己的AbstractActionController
操作与我自己编写的 CRUD 操作一起使用,这需要一个AbstractEntity
. 这节省了大量的写作/思考;)