2016-09-28 70 views
0

我想填充下面一個一對多主義協會但是我打一個問題,因爲每個客戶(主鍵: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。有沒有辦法來解決這個問題?

回答

0

我建議您將$ visitday屬性更改爲DateTime。這將是您的訪問日期時間戳。然後客戶屬性應該與訪問相反。

/** 
* @ORM\Column(name="customer_id", type="integer", options={"unsigned"=true}) 
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="visits") 
* @ORM\Id 
*/ 
private $customer; 

正如你可能關係客戶更改爲訪問次數多對多的選項。所以你不會有重複的訪問日期。

+0

Thanks @ Mike-Kor - 雖然'$ visitday'是我需要的一個分類變量。有沒有一種方法可以將它們連接起來,以便客戶可以將「訪問」填充爲只有該客戶訪問的「$ visitday」整數數組? – Bendy

+0

@本迪,對於遲到的迴應感到抱歉。您已在Customer實體中擁有$ visits變量,該變量代表訪問實體陣列,您可以訪問客戶訪問日。 –