[英]Doctrine one-to-many association: Issues with composite primary key
我正在嘗試填充以下一對多的教義關聯,但是我遇到了一個問題,因為每個客戶 (主鍵: id
)的訪問(主鍵: customer_id
和visitday
)都在“ 訪問”表中捕獲了(我派生visitday自2000年1月1日以來一直保留到數據庫的天數(因為datetime對象不能在主鍵中):
class Customer
{
/**
* @ORM\Column(type="integer", options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="Visit", mappedBy="visitday")
*/
protected $visits;
public function __construct()
{
$this->visits = new ArrayCollection();
}
/* -- */
}
Class Visit
{
/**
* @ORM\Column(name="customer_id", type="integer", options={"unsigned"=true})
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
* @ORM\Id
*/
private $customer;
/**
* @ORM\Column(type="smallint")
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="visits")
* @ORM\JoinColumn(name="visitday", referencedColumnName="id")
* @ORM\Id
*/
protected $visitday;
/* -- */
}
我的問題是我的客戶對象未填充客戶的相應訪問。 我認為這是因為教義無法看到它還應該在查詢中包含其自己的客戶ID。 有沒有辦法解決這個問題?
我建議您將$ visitday屬性更改為DateTime。 這將是您的訪問日期時間戳。 然后,客戶屬性應與訪問次數成反比。
/**
* @ORM\Column(name="customer_id", type="integer", options={"unsigned"=true})
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="visits")
* @ORM\Id
*/
private $customer;
作為一種選擇,您可以將客戶關系更改為“多對多訪問”。 這樣您就不會有重復的訪問日期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.