2017-10-06 72 views
0

我有一個實體A與一對多乙
實體答:主義多對一另一個indexe比ID

/** 
* @ORM\Table(name="A", indexes={ 
*  @ORM\index(name="uid", columns={"uid"}), 
* }) 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ARepository") 
*/ 
class A 
{ 

/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var string 
* @ORM\Column(name="uid", type="string", length=50, unique=true) 
*/ 
private $uid; 

/** 
* ORM\OneToMany(targetEntity="AppBundle\Entity\B",mappedBy="a",cascade={"persist","remove"}) 
*/ 
private $b; 

// Guetters and setters ... 

而實體B

/** 
* @ORM\Table(name="B") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\BRepository") 
*/ 
class B 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\A",inversedBy="b") 
* @ORM\JoinColumn(referencedColumnName="uid",name="a_uid") 
*/ 
private $a; 

// Guetters and setters ... 

我嘗試這樣做:

$A = new A(); 
$B->setA($A); 

我堅持他們。當我衝,我有這樣的錯誤:(?)

[Symfony\Component\Debug\Exception\ContextErrorException] 
Notice: Undefined index: uid 

我真的不知道該怎麼辦,看來我有一個指標問題...任何幫助是值得歡迎的

更新:

如果我在$ uid上添加@ORM\Id,並且刪除@ORM\GeneratedValue(strategy="AUTO"),它會在我手動設置A.id字段時起作用...
我正在接近目標! ^^

回答

0

您正在引用來自類A的uid作爲關係的referenceColumn,它是一個可爲空的字段。將其更改爲

/** * @ORM\ManyToOne(targetEntity="AppBundle\Entity\A",inversedBy="b") * @ORM\JoinColumn(referencedColumnName="id",name="a_id") */ private $a;

或使UID爲空的錯誤。由於uid數據是唯一的,因此也考慮將uid作爲A級主鍵。