Doctrine orm 原则2-一对一自动生成空行
假设我有两个实体,用户和地址。每个用户都必须有一个地址,以便表之间存在一对一的关系 现在我想生成一个用户,它应该自动创建一个没有数据的地址行,并且只标记它们之间的关系 这在实体或EntityRepository类中是可能的吗?还是有一个命令可以自动执行此操作Doctrine orm 原则2-一对一自动生成空行,doctrine-orm,Doctrine Orm,假设我有两个实体,用户和地址。每个用户都必须有一个地址,以便表之间存在一对一的关系 现在我想生成一个用户,它应该自动创建一个没有数据的地址行,并且只标记它们之间的关系 这在实体或EntityRepository类中是可能的吗?还是有一个命令可以自动执行此操作 感谢在存储库中编写函数: class User_Repository { public function createEmptyUserWithAddress() { $user = new User();
感谢在存储库中编写函数:
class User_Repository {
public function createEmptyUserWithAddress() {
$user = new User();
$entityManager->persist($user);
$entityManager->flush();
$address = new Address();
$entityManager->persist($address);
$entityManager->flush();
$user->setAddress($address);
$address->setUser($user);
$entityManager->flush();
}
}
或扩展用户或地址的构造函数:
class User {
public function __construct(Address $address) {
$this->setAddress($address);
}
}
class User_Repository {
public function createEmptyUserWithAddress() {
$address = new Address();
$entityManager->persist($address);
$entityManager->flush();
$user = new User($address);
$entityManager->persist($user);
$entityManager->flush();
}
}
在存储库中写入函数:
class User_Repository {
public function createEmptyUserWithAddress() {
$user = new User();
$entityManager->persist($user);
$entityManager->flush();
$address = new Address();
$entityManager->persist($address);
$entityManager->flush();
$user->setAddress($address);
$address->setUser($user);
$entityManager->flush();
}
}
或扩展用户或地址的构造函数:
class User {
public function __construct(Address $address) {
$this->setAddress($address);
}
}
class User_Repository {
public function createEmptyUserWithAddress() {
$address = new Address();
$entityManager->persist($address);
$entityManager->flush();
$user = new User($address);
$entityManager->persist($user);
$entityManager->flush();
}
}
首先,你不需要它。使用模式 第二,如果你真的需要它:
class User {
public function __construct() {
$this->setAddress(new Address);
}
}
并设置:
首先,你不需要它。使用模式 第二,如果你真的需要它:
class User {
public function __construct() {
$this->setAddress(new Address);
}
}
并设置:
您可以使用_构造来创建关系
class User
{
/**
* @OneToOne(targetEntity="Address", cascade={"persist"})
*/
private $address;
public function __construct()
{
$address = new Address();
$address->setUser($this);
$this->address = $address;
}
}
您可以使用_构造来创建关系
class User
{
/**
* @OneToOne(targetEntity="Address", cascade={"persist"})
*/
private $address;
public function __construct()
{
$address = new Address();
$address->setUser($this);
$this->address = $address;
}
}
不要冲一次以上。最后一次刷新就足够刷新所有更改了。是的,我知道,谢谢。我已经写了Zend插件,它可以在postDispatch中刷新。不要多次刷新。最后一次刷新就足够刷新所有更改了。是的,我知道,谢谢。我已经编写了Zend插件,它可以在postDispatch中刷新;和$address->setUser$this@这取决于关联是双向的还是单向的。从描述上看,它看起来是单向的。虽然cascade persist的例子是双向的,但是已经修复了这个问题;和$address->setUser$this@这取决于关联是双向的还是单向的。从描述上看,它看起来是单向的。虽然cascade persist的示例是双向的,但修复了这个问题。