を使用したかったのでFOSUserBundle
、インストールして最初に注釈を設定しましたが、他のエンティティがあったため、yaml を選択しました。
ドキュメントに書かれているとおりに、yaml ファイルを作成し、必要なフィールドをいくつか追加しました。エンティティ自体を生成し、php ファイルでBaseUser
クラスを拡張しました。
最初にSQLを更新したいときにエラーをスローして保護またはパブリックに変更したため、その部分は機能していますが、更新後、ベース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 に設定されています。