1-n Aralığım olan bir Teklifim olduğunu varsayalım. Hemen "bir Range_id in range" seçeneğini düşünün.Doctrine2 ile birleşik anahtar varlıklarla ilişki nasıl ele alınır?
Ancak Teklifim birleşik bir birincil anahtara (iki alandan oluşur) sahiptir. AUTOINCREMENT kimliği sütunu yok.
Doctrine2 belgeleri söz konusu durum hakkında pek söylemez, işte benim varlıklar: Ben bu hatayı obtaind
<?php
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table()
* @ORM\Entity
*/
class Offer
{
/**
* @var Site $site
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Site")
* @ORM\JoinColumn(name="site_id", referencedColumnName="id")
*/
private $site;
/**
* @var string $pouet
* @ORM\Id
* @ORM\Column(name="pouet", type="string", length=255)
*/
private $pouet;
}
<?php
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="RangeItem")
* @ORM\Entity
*/
class Range
{
/**
* @todo This is test code only do not push me :-)
* @var ArrayCollection
* @ORM\ManyToOne(targetEntity="Offer")
*/
private $offers;
}
: mantıklı, ama nasıl başa çıkabilirim
[Doctrine\ORM\ORMException]
Column nameid
referenced for relation from Pouet\MyBundle\Entity\Range towards Pouet\MyBundle\Entity\Offer does not exist.
bu sorunla mı? Kompozit birincil anahtar içeren bir tablo üzerinde dernekler olması yasak mı? ,
/**
* @ORM\ManyToOne(targetEntity="Offer")
* @ORM\JoinColumn(name="offer_pouet", referencedColumnName="pouet")
*/
private $offers;
bunları belirtmek yoksa @JoinColumn
için varsayılan, offer_id
ve id
olacağından:
Bileşik bir anahtarım var, Teklif birincil anahtarım $ site VE $ pouet'in birleştirilmesidir. Bu yüzden referenceColumnName kullanamıyorum, bir kompozitiniz varsa PK için sütun adı yok. – Damien
Yakalama, düzenleme. Bağlantı için – Problematic
Thx, ancak bu da çalışmıyor. Nesne teklifimi diğer varlıklar içinde nasıl referans göstereceğimi hala anlayamıyorum. Ciddi bir şekilde, otomatik olarak artırılmış bir kimliğe (ve benim alanlarımda BENZERİ BİR dizin) sahip olmak için seksi bileşik anahtarın düşürülmesini düşünüyorum. – Damien