私は Symfony と Doctrine が初めてで、クライアントとエキスパートの 2 種類のユーザーを持つ単純なユーザー登録システムを実装しようとしています。
両方のユーザーが共有する共通データと、そこから拡張される他の 2 つの共通データを持つ抽象クラス Usuario があります。
問題は、コマンド app/console doctrine:schema:update を実行すると、Usuario クラスのすべてのフィールドを含むテーブル Usuario が生成されますが、Experto クラスのフィールドは 1 つだけです。
これが私のコードです:
クラス・ウスアリオ:
/**
* Usuario
*
* @ORM\Entity
* @ORM\Table(name="Usuario")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="tipo", type="string")
* @ORM\DiscriminatorMap( {"cliente" = "Cliente", "experto" = "Experto"} )
*/
abstract class Usuario
{
/**
* @var integer
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string $nombre
*
* @ORM\Column(name="nombre", type="string", length=255)
*/
protected $nombre;
/**
* @var string $email
*
* @ORM\Column(name="email", type="string", length=255)
*/
protected $email;
/**
* @var string $password
*
* @ORM\Column(name="password", type="string", length=32)
*/
protected $password;
/**
* @var \DateTime $fecha_registro
*
* @ORM\Column(name="fecha_registro", type="datetime")
*/
Setters and Getters
クラスエキスパート:
/**
* Experto
*
* @ORM\Entity(repositoryClass="QuienLoRepara\UsuariosBundle\Entity\ExpertoRepository")
*/
class Experto extends Usuario
{
/**
* @var string $nombre_negocio
*
* @ORM\Column(name="nombre_negocio", type="string", length=255)
*/
protected $nombre_negocio;
/*
* @var text $descrip_negocio
*
* @ORM\Column(name="descrip_negocio", type="text")
*/
protected $descrip_negocio;
/*
* @var string $descripcion
*
* @ORM\Column(name="direccion", type="string", length=255)
*/
protected $direccion;
/*
* @var string $telefono
*
* @ORM\Column(name="telefono", type="string", length=255)
*/
protected $telefono;
/*
* @var string $actividad
*
* @ORM\Column(name="actividad", type="string", length=255)
*/
protected $actividad;
/*
* @var decimal $latitud
*
* @ORM\Column(name="latitud", type="decimal", precision=10, scale=8)
*/
protected $latitud;
/*
* var decimal $longitud
*
* @ORM\Column(name="longitud", type="decimal", precision=11, scale=8)
*/
protected $longitud;
/**
* @var Collection
* @ORM\OneToMany(targetEntity="Skill", mappedBy="experto")
* @ORM\JoinColumn(name="usuario_id", referencedColumnName="id")
*/
protected $skills;
その結果、クラス usuario のすべてのプロパティと Experto クラスのプロパティ nombre_negocio のみを持つ Usuario というテーブルが作成されます。私が間違っていることはありますか?前もって感謝します。