[英]Foreign key on composite primary key not working
我有一个实体,该实体引用具有复合主键的另一个实体。
我只是在做一个ManyToOne关系。 每个公司可以有很多行业。 每家公司都是某些证券交易所的一部分,其唯一标识符既是上市的证券交易所,又是股票代码。
尝试更新架构时收到的错误是:
Column name ``id`` referenced for relation from Application\\Entity\\Trade towards Application\\Entity\\Company does not exist.
我认为这是公司的默认id
。 有什么方法可以为一个表上的主键指定多个外键?
<?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;
}
}
这是公司实体,如果有帮助的话
<?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;
}
}
您应该能够使用@ORM\\JoinColumns
批注引用多个列。 在内部可以定义一个或多个@ORM\\JoinColumn
批注。
例如
/**
* @ORM\ManyToOne(targetEntity="Application\Entity\Company", inversedBy="trade")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="symbol", referencedColumnName="symbol"),
* @ORM\JoinColumn(name="exchange", referencedColumnName="exchangeKey")
* });
*/
protected $company;
我打算链接到文档,但是我只能找到this 。
具有多个标识符的实体的@ManyToOne或@OneToOne关系的@JoinColumn注释数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.