我有一個具有復合主鍵的表:id est_date。它有一個物體:
class Parent
{
/**
* @ORM\Id
*/
private $id;
/**
* @ORM\Id
*/
private int $estDate;
...
}
現在我需要創建一個相關表及其物體。
class Child
{
...
/**
* don't know what to write here
*/
private $parentId;
/**
* don't know what to write here
*/
private int $parentEstDate;
...
}
如何描述 ManyToOne 關系(許多“子”物體可能與 1 個“父”物體相關)?第二個問題是——“父母”的“estDate”可能會改變。如何在“Child”中指定級聯更新?請不要寫信條不建議使用復合鍵。我知道。
uj5u.com熱心網友回復:
在子物體上,您基本上會以與單列相同的方式參考父物體。從...開始
注釋版本:
/**
* @ORM\ManyToOne(targetEntity=Parent::class)
*/
private ?Parent $parent;
由于孩子是擁有方,因此您必須提供連接列,正如您所注意到的那樣。有一個錯誤記錄的注釋JoinColumns允許定義多個連接列。(注意那些使用屬性語法的人:你應該能夠有多個#[JoinColumn(...)],沒有 JoinColumns-Wrapper)
注釋版本:
/**
* @ORM\ManyToOne(targetEntity=Parent::class)
* @ORM\JoinColumns({
* @ORM\JoinColumn("parent_id", referencedColumnName="id"),
* @ORM\JoinColumn("parent_est_date", referencedColumnName="est_date")
* })
*/
private ?Parent $parent;
如果您還想添加反面,則在使用 mappedBy/inversedBy 時始終參考物件屬性,而不是列。
通常與 doctrine-orm:你的類/物件不應該關心列,只關心 php 的東西,doctrine 應該處理其余的。注釋告訴學說,這如何轉換為列。因此,在這種情況下,并非每一列都會獲得自己的屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533870.html
標籤:PHP数据库交响乐教义
