2013-08-03 141 views
1

我有一個原則2. 問題,我有以下數據庫表: 所以,學說產生它retrive從現場的辦公桌設置數據實體,但我需要,要檢索desk_settings表中的所有設置和使用desk_id學說2多對多與翻譯

DB圖像從desk_settings_values表覆蓋其值 - >https://docs.google.com/file/d/0B7rOFTJGfJwTWEQ3bXZFU1hXZlU/edit?usp=sharing

學說實體將其生成與腳本:

 
/** 
* Desk 
* 
* @ORM\Table(name="desk") 
* @ORM\Entity 
*/ 
class Desk 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="code", type="string", length=100, nullable=false) 
    */ 
    private $code; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="description", type="string", length=255, nullable=false) 
    */ 
    private $description; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="created", type="datetime", nullable=false) 
    */ 
    private $created; 

    /** 
    * @var \Doctrine\Common\Collections\Collection 
    * 
    * @ORM\ManyToMany(targetEntity="PayBox\Entity\DeskSettings", mappedBy="desk") 
    */ 
    private $deskSettings; 
} 

 

use Doctrine\ORM\Mapping as ORM; 

/** 
* DeskSettings 
* 
* @ORM\Table(name="desk_settings") 
* @ORM\Entity 
*/ 
class DeskSettings 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="setting_key", type="string", length=100, nullable=false) 
    */ 
    private $settingKey; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="setting_value", type="string", length=255, nullable=false) 
    */ 
    private $settingValue; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="created", type="datetime", nullable=false) 
    */ 
    private $created; 

    /** 
    * @var \Doctrine\Common\Collections\Collection 
    * 
    * @ORM\ManyToMany(targetEntity="PayBox\Entity\Desk", inversedBy="deskSettings") 
    * @ORM\JoinTable(name="desk_settings_values", 
    * joinColumns={ 
    *  @ORM\JoinColumn(name="desk_settings_id", referencedColumnName="id") 
    * }, 
    * inverseJoinColumns={ 
    *  @ORM\JoinColumn(name="desk_id", referencedColumnName="id") 
    * } 
    *) 
    */ 
    private $desk; 
} 

+1

可以刪除SQL架構定義和吸氣劑和setter和全面,但沒有方法(的getter和setter方法)發表您的3個實體? – Flip

+0

完成。 學說僅產生2的實體,其跳躍DeskSettingsValues實體 – Dmitry

+0

「使用desk_id從desk_settings_values表覆蓋其值」。爲什麼desk_settings_values與桌子有關係?這似乎是架構更明顯的選擇:許多Desk_settings的桌子,Desk_settings_values的Desk_setting。順便說一下你的數據庫模式的圖片也會很好。 – Flip

回答

1

從學說文檔:

爲什麼許多-to-many關聯較少見?因爲您經常需要將其他屬性與關聯關聯起來,其中 情況下您將引入關聯類。因此,直接 許多一對多關聯消失並由 一個一對多/多到一個3個參與 類之間的關係所取代。

您需要將您的班級結構更改爲一對多/多對一。 See this blog