2

假设我有 2 个实体,用户和地址。每个用户都必须有一个地址,因此表之间存在一对一的关系。

现在我想生成一个用户,它应该自动创建一个没有数据的地址行并标记它们的关系。

这可能在 Entity 或 EntityRepository 类中吗?还是有自动执行此操作的命令?

谢谢

4

3 回答 3

2

首先,你不需要它。使用空对象模式。

其次,如果你真的需要它:

class User { 
    public function __construct() { 
        $this->setAddress(new Address);
    }
}

并设置级联持续

 * @OneToOne(targetEntity="Address", cascade={"persist"})
于 2012-04-06T16:55:02.587 回答
1

在存储库中写入函数:

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();
    }
}
于 2012-04-06T15:27:02.597 回答
1

您可以使用 __construct() 创建关系

class User
{
    /**
     * @OneToOne(targetEntity="Address", cascade={"persist"})
     */
    private $address;

    public function __construct()
    {
        $address = new Address();
        $address->setUser($this);
        $this->address = $address;
    }
}
于 2013-01-30T08:35:35.530 回答