Сначала извините за мой английский)
У меня есть следующие таблицы:
1) rejection_reasons
rejection_reason_id
locale_code
название
Первичный ключ: rejection_reason_id, locale_code
2) order_rejection_reasons
order_id
rejection_reason_id
Первичный ключ: order_id
Внешний ключ: rejection_reason_id ( Примечание! без поля locale_code )
Объекты:
class RejectionReason
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="rejection_reason_id", type="smallint", length=1, nullable=false)
*/
private $id;
/**
* @var string
*
* @ORM\Id
* @ORM\Column(name="locale_code", type="string", length=2, nullable=false, options={"fixed"=true})
*/
private $localeCode;
/**
* @ORM\OneToMany(targetEntity="OrderRejectionReason", mappedBy="rejectionReason", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $orderRejectionReasons;
/**
* @param int $id
* @param string $localeCode
*/
public function __construct($id, $localeCode)
{
$this->id = $id;
$this->localeCode = $localeCode;
$this->orderRejectionReasons = new ArrayCollection();
}
}
class OrderRejectionReason
{
/**
* @var int
*
* @ORM\Column(name="order_id", type="integer", nullable=false, options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var RejectionReason
*
* @ORM\ManyToOne(targetEntity="RejectionReason", inversedBy="orderRejectionReasons")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="rejection_reason_id", referencedColumnName="rejection_reason_id", nullable=false, onDelete="CASCADE")
* })
*/
private $rejectionReason;
}
Doctrine возвращает ошибку:
Столбцы объединения ассоциации 'rejectionReason' должны соответствовать ВСЕМ столбцам идентификатора целевого объекта 'App \ Entity \ RejectionReason', однако 'locale_code' отсутствует.
Не могли бы вы помочь мне установить связь между этими таблицами?