1
私はClassA
を、ManyToOne関係(これまではシンプル)のエンティティClassB
にマップしました。Doctrine 2外部キーとしての複合プライマリキー
class ClassA{
/**
* @var string
* @ORM\Id
* @ORM\Column(name="keyA", type="string", length=255)
*/
private $keyA;
/**
* @var ClassB $classB
* @ORM\ManyToOne(targetEntity="ClassB", inversedBy="classAs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ClassB_keyB", referencedColumnName="keyB")
* })
*/
private $classB;
}
そして、これがClassB
です:
class ClassB{
/**
* @var string
* @ORM\Id
* @ORM\Column(name="keyB", type="string", length=255)
*/
private $keyB;
/**
*
* @var ClassC $classC
* @ORM\Id
* @ORM\ManyToOne(targetEntity="ClassC", inversedBy="classBs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ClassC_keyC", referencedColumnName="keyC")
* })
*/
private $classC;
/**
* @var ArrayCollection $classAs
* @ORM\OneToMany(targetEntity="ClassA", mappedBy="classB")
*/
private $classAs;
}
あなたがClassB
を気づくことができるように複合主キー(2つのエンティティとカラム上)が含まれています。
そして、これはClassC
です:
class ClassC{
/**
* @var string
* @ORM\Id
* @ORM\Column(name="keyC", type="string", length=255)
*/
private $keyC;
/**
* @var ArrayCollection $classBs
* @ORM\OneToMany(targetEntity="ClassB", mappedBy="classC")
*/
private $classBs;
}
私は(findAll()
を使用)にClassAのすべてのエンティティを表示しようWhene私はこの例外にMissing value for primary key classC on ERP\................\ClassB
を得る私はここで何をしないのですか?!
パブリック関数を追加する必要があります - > leftJoin( 'di.classB'、 'ec') - > addSelect( 'ec') - > getQuery() - > getResult(); } – isom
は素晴らしい仕事をしています – Ld91