2015-12-02 85 views
1

我使用學說2,我的實體已經設置變量一樣:PHP保溼 ClassMethodsHydrator下劃線代替,以駝峯造成錯誤

 /** 
    * @ORM\Column(type="string") 
    */ 
    protected $phone_number; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    protected $e_mail; 

現在我要填寫使用保溼像這樣從數組這個變量:

public function fromArray($values) 
    { 
     $hydrator = new \Hydrator\ClassMethodsHydrator(); 
     $hydrator->hydrate($values, $this); 
    } 

但是使用這個功能後,我得到錯誤監守保溼試圖調用的代替setPhone_number()setphoneNumber()...

你能幫我實現我的目標,而不是改變下劃線到camelCase嗎?

謝謝

回答

1

嘗試:

/** 
* @ORM\Column(type="string", name="phone_number") 
*/ 
protected $phoneNumber; 

學說將創建數據庫架構時反正重命名phoneNumber的到PHONE_NUMBER,但通過使用\列或\表定義的name屬性可以確保你的名字被使用。

所以在你數據庫表列是:PHONE_NUMBER

實體屬性被稱爲:phoneNumber的

因此,這通常會在setPhoneNumber最終爲您制定者這是罰款。

+0

感謝您的回答。這有效,但我有點擔心,如果它是一個propop方式來做到這一點。因爲實體表示表和對象變量表示列,我不想把它搞亂,因爲「同一件事」有不同的名字 –

+0

您可以輕鬆接受答案 - 這是做到這一點的正確方法。因爲即使它感覺是一樣的東西 - 它不是!一個是你的表定義,另一個是你的實體定義,根據ORM的概念,這是不一樣的。在涉及DQL vs SQL中的SELECTS時,你會看到很多人爲這種差異而掙扎。 – LBA