Fos UserBundle与yaml - doctrine架构更新

时间:2013-05-26 22:14:29

标签: php symfony doctrine-orm yaml fosuserbundle

我想使用FOSUserBundle,安装它并首先使用注释设置它,但因为我有其他实体我选择了yaml。

我按照文档编写的方式创建了yaml文件并添加了我需要的一些字段。我生成了实体本身,然后在php文件中扩展了BaseUser类。

该部分正在运行,因为当我第一次想要更新SQL时,它会将错误更改为protected或public,但更新后,基本FOS字段不在DB中。

这是User.orm.yml

Plastic\PublicBundle\Entity\User:
type:  entity
lifecycleCallbacks:
    prePersist: [setCreated, setModified]
    preUpdate: [setModified]
oneToMany:
    albums:
        targetEntity: Album
        mappedBy: user
    images:
        targetEntity: Image
        mappedBy: user
table: users
id:
    id:
        type: integer
        generator:
            strategy: AUTO
fields:
    firstName:
        type: string
        length: 50
    lastName:
        type: string
        length: 50
    gender:
        type: boolean
    dateOfBirth:
        type: date

具有第一个相关部分的User.php实体:

<?php

namespace Plastic\PublicBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

use FOS\UserBundle\Model\User as BaseUser;

/**
 * User
 */
class User extends BaseUser
{

/**
 * @var integer
 */
protected $id;

/**
 * @var string
 */
private $firstName;

/**
 * @var string
 */
private $lastName;
    /**
 * Constructor
 */
public function __construct()
{
    parent::__construct();
    $this->albums = new \Doctrine\Common\Collections\ArrayCollection();
    $this->images = new \Doctrine\Common\Collections\ArrayCollection();
}

在我的ORM的config.yml中,自动化设置为true。

1 个答案:

答案 0 :(得分:2)

而不是

use FOS\UserBundle\Model\User as BaseUser;

尝试使用

use FOS\UserBundle\Entity\User as BaseUser;

即,因为您正在使用orm,所以必须使用Entity基类,而不是Model基类。我也被困了一段时间,但上述改变让事情再次发挥作用。