Doctrine orm 如何在manytone关系中手动连接列和目标实体?
我有两个字段:帐户类型\ id和帐户\ id。 如果accountTypeId=1,我如何手动将条令目标实体映射到加入公司实体;如果account\u-id=2,我如何手动将条令目标实体映射到加入用户实体Doctrine orm 如何在manytone关系中手动连接列和目标实体?,doctrine-orm,doctrine,mapping,doctrine-query,Doctrine Orm,Doctrine,Mapping,Doctrine Query,我有两个字段:帐户类型\ id和帐户\ id。 如果accountTypeId=1,我如何手动将条令目标实体映射到加入公司实体;如果account\u-id=2,我如何手动将条令目标实体映射到加入用户实体 <?php /** @Entity */ class Accounts { // 1= Company, 2 = User private $accountType; /** * @ManyToOne(targetEntity="Compa
<?php
/** @Entity */
class Accounts
{
// 1= Company, 2 = User
private $accountType;
/**
* @ManyToOne(targetEntity="Companies")
*/
private $company;
/**
* @ManyToOne(targetEntity="Users")
*/
private $user;
//...
}
不幸的是,动态连接不同的列无法自动完成,但是您可以将这两个字段都设置为可空,并且在持久化帐户实体时只设置正确的字段
这将是注释:
/**
* @ORM\ManyToOne(targetEntity="Users", inversedBy="users")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
*/
private $user;
请记住,不管怎样,nullable=true是默认值,我只是在这里具体说明一下
如果你想对此进行防御,你可以有一个额外的签入getter
/**
* @return User
* @throws \Exception
*/
public function getUser()
{
if ($this->accountType !== 2) {
throw new \Exception("Entity is not of type 'user'");
}
return $this->user;
}