1 人のユーザーがアイテムを 1 つしか持っていない場合もあれば、何も持っていない場合もあります。(1-1..0 の関係)
私は教義を使ってsymfony2でそれを達成しようとしています。
私は 1 対 1 の関係を達成しました。それはかなり単純です。しかし、ユーザーを作成したいときにアイテムがnullになる可能性があることを教義に指定するにはどうすればよいですか? (新しい行を挿入せず、id_item を null のままにする)
これは私が持っているものです:
user.orm.yml ファイル
oneToOne:
userItem:
targetEntity: SOA\AXBundle\Entity\Items
cascade: ["remove", "persist"]
joinColumn:
name: id_item
referencedColumnName: id
nullable: true
そしてもちろん、ItemsTypeForm クラスを作成し、タイプを userstypeform クラスに追加しました。
// UsersTypeForm Class
->add('userItem', new \SOA\AXBundle\Form\ItemsTypeForm())
コントローラーアクションはこんな感じで、
public function addUserAction(Request $request) {
$user = new User();
$form = $this->createForm(new UseType(), $user);
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('homepage'));
}
}
}
新しいユーザーを追加すると、すべてうまくいきます。アイテムだけでなくユーザーも挿入されます。しかし、アイテムを持たないユーザーを追加しようとすると (ユーザー アイテム フィールドが空白)、次のエラーが発生します。
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
null 値で項目を挿入しようとしています。
1 対 1 の関係でも生きていけるけど、1 対 1..0 の関係を作る方法を学びたい。