Ich habe eine Entität, die auf eine andere Entität mit einem zusammengesetzten Primärschlüssel verweist.Fremdschlüssel für Composite-Primärschlüssel funktioniert nicht
Ich mache einfach eine ManyToOne Beziehung. Jede Firma kann viele Geschäfte haben. Jede Gesellschaft ist Teil einer Börse und ihr eindeutiger Bezeichner ist sowohl die Börse, an der sie notiert sind, als auch ihr Aktiensymbol.
Der Fehler, die ich bekomme, wenn ich versuche, das Schema zu aktualisieren ist:
Column name ``id`` referenced for relation from Application\Entity\Trade towards Application\Entity\Company does not exist.
Ich denke, es versucht zu id
auf das Unternehmen Standard. Gibt es eine Möglichkeit, mehrere Fremdschlüssel für den Primärschlüssel in einer Tabelle anzugeben?
<?php
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="trade")
*/
class Trade
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(name="id",type="integer")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $price;
/**
* @ORM\Column(type="integer")
*/
protected $size;
/**
* @ORM\Column(type="datetime")
*/
protected $dateTime;
/**
* @ORM\ManyToOne(targetEntity="Application\Entity\Company", inversedBy="trade")
*/
protected $company;
/**
* @return mixed
*/
public function getPrice()
{
return $this->price;
}
/**
* @param mixed $price
*/
public function setPrice($price)
{
$this->price = $price;
}
/**
* @return mixed
*/
public function getSize()
{
return $this->size;
}
/**
* @param mixed $size
*/
public function setSize($size)
{
$this->size = $size;
}
/**
* @return mixed
*/
public function getDateTime()
{
return $this->dateTime;
}
/**
* @param mixed $dateTime
*/
public function setDateTime($dateTime)
{
$this->dateTime = $dateTime;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getCompany()
{
return $this->company;
}
/**
* @param mixed $company
*/
public function setCompany($company)
{
$this->company = $company;
}
}
Hier ist das Unternehmen Einheit, wenn die
<?php
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="company")
*/
class Company
{
/**
* @ORM\Id
* @ORM\Column(length=5)
*/
protected $symbol;
/**
* @ORM\Id @ORM\ManyToOne(targetEntity="\Application\Entity\Exchange", inversedBy="company")
* @ORM\JoinColumn(name="exchangeKey", referencedColumnName="exchangeKey")
*/
protected $exchange;
/**
* @return mixed
*/
public function getSymbol()
{
return $this->symbol;
}
/**
* @param mixed $symbol
*/
public function setSymbol($symbol)
{
$this->symbol = $symbol;
}
/**
* @return mixed
*/
public function getExchange()
{
return $this->exchange;
}
/**
* @param mixed $exchange
*/
public function setExchange($exchange)
{
$this->exchange = $exchange;
}
}