Doctrine2 を使用してデータを db に挿入したいと考えています。
私は2つのテーブルを持っています:
users
-name
-password
-enabled
groupmembers
-groupname
-username
新しいユーザーを作成したいので、両方のテーブルにデータを入れたいです。
私のクラス:
class Users
{
/**
* @var string
* @Id @Column(name="name", type="string", length=128, nullable=false)
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="users_name_seq", allocationSize=1, initialValue=1)
*/
private $name;
/**
* @var string
* @Column(name="password", type="string", length=254, nullable=true)
*/
private $password;
/**
* @var string
* @Column(name="enabled", type="string", nullable=false)
*/
private $enabled;
/**
* @OneToOne(targetEntity="GroupMembers", inversedBy="username")
* @JoinColumn(name="name", referencedColumnName="username")
**/
private $group;
}
.
class GroupMembers
{
/**
* @Id @Column(type="string")
*/
protected $groupname;
/**
*@Id @Column(type="string")
*/
protected $username;
/**
* @OneToOne(targetEntity="Users", mappedBy="group")
* @JoinColumn(name="username", referencedColumnName="name")
*/
protected $user;
}
そして私のコード:
<?php
// addUser.php
require_once "bootstrap.php";
$name = $argv[1];
$pass = "plain:".$argv[2];
$enabled = $argv[3];
$groupname = $argv[4];
$user = new Users();
$user->setName($name);
$user->setPassword($pass);
$user->setEnabled($enabled);
$group = new GroupMembers();
$group->setGroupName($groupname);
$group->setUserName($name);
$entityManager->persist($user);
$entityManager->flush();
$entityManager->persist($group);
$entityManager->flush();
echo "Your new User: ".$user->getName()."\n";
Not null violation
そして、フィールドにエラーがありますname
。ご覧のとおり、クラスにはこのフィールドによる OneToOne 関連付けがあります。
何が間違っている可能性がありますか?
アップデート
,cascade="persist"
OneToOne アノテーションに追加し、コードを変更します。
<?php
// addUser.php
require_once "bootstrap.php";
$name = $argv[1];
$pass = "plain:".$argv[2];
$enabled = $argv[3];
$groupname = $argv[4];
$user = new Users();
$user->setName($name);
$user->setPassword($pass);
$user->setEnabled($enabled);
$group = new GroupMembers();
$group->setGroupName($groupname);
$group->setUserName($name);
$user->setGroup($group);
$entityManager->persist($user);
$entityManager->flush();
echo "Your new User: ".$user->getName()."\n";
しかし、助けにはなりません。