php - 在 table2 的部分组成主键上设置 table1 的外键
问题描述
首先对不起我的英语)
我有以下表格:
1)拒绝原因
拒绝原因ID
locale_code
标题
主键: rejection_reason_id、locale_code
2) order_rejection_reasons
order_id
拒绝原因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;
}
教义返回错误:
关联“rejectionReason”的连接列必须与目标实体“App\Entity\RejectionReason”的所有标识符列匹配,但是缺少“locale_code”。
你能帮我设置这些表之间的关系吗?
解决方案
关联“rejectionReason”的连接列必须与所有标识符列匹配,因此您应该查看标识符列。如您所见,localcode 被标记为 id (@ORM\Id) 以及 id,这意味着您创建了一个复合主键。
看看:https ://www.doctrine-project.org/projects/doctrine-orm/en/2.6/tutorials/composite-primary-keys.html
因为它是一个复合主键,所以您不能只与两个标识符(JoinColumn,referencedColumnName="id")中的一个相关联。
您可以考虑使 localeCode 唯一而不是 id 这应该可以解决您的问题。(因此您必须决定 localCode 是否应该是 id)您也可以尝试将 localCode 添加到 JoinColumn 注释。
推荐阅读
- java - 它不会给我代码错误,MySQLSyntaxErrorException
- visual-studio-code - VSCode Minimap 不工作,是我的机器太旧了吗?
- python - 如何将html标签添加到字符串,避免嵌套标签
- python - 为什么数据框的内容会影响设置?
- apache-kafka - 如何使用 Kafka 连接输出到 GCS 中的动态目录?
- python - 如何在 Python 中使用 drawContours OpenCV 方法?
- python-3.x - 如何对numpy数组中除第一列之外的所有列进行切片?
- scala - 未找到函数的隐式
- html - ReactJs - onClick 似乎不适用于按钮 HTML 标签
- java - Flyway 找不到类路径:db/migrations