1 対 1 の関係で、エンティティを使用してすべてのフィールドを取得するフォームを作成できるかどうか疑問に思っています。明確にするために:
エンティティ (すべてUser.phpの明白なフィールド、名前、姓、ジャンルなど) とAddress.phpエンティティがあります。私が望むのは、Addressエンティティのプロパティを1つずつ追加せずにフォーム全体を構築し、データベースに適切な関係で保存することです.
これは私が試したものです(コードを少しトリミングしました)が、明らかに正しい方法ではありません:
ユーザー エンティティ:
class User implements UserInterface {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, nullable=TRUE)
*/
protected $firstName;
/**
* @ORM\Column(type="string", length=200)
* @Assert\NotBlank()
*/
protected $lastNames;
/**
* @ORM\OneToOne(targetEntity="Capsa\Bundle\ClubCommonBundle\Entity\Address")
*/
protected $address;
住所クラス
class Address {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, unique=TRUE)
* @Assert\NotBlank()
*/
protected $streetName;
/**
* @ORM\Column(type="string", length=50)
*/
protected $streetNumber;
フォームビルダー:
public function buildForm(FormBuilder $builder, array $options) {
$builder->add('login', 'text')
->add('password', 'password')
->add('firstName', 'text', array("required" => FALSE))
->add('lastNames', 'text')
->add('address', 'entity', array(
'class' => 'CapsaClubCommonBundle:Address',
'property'=>'streetName'
));
}
これは、テーブルのフィールド streetName のみを取得し、リストに入れます。