2014-01-24 54 views
0

請幫助我嗎?Doctrine2 - 添加到產品實體參數值

我正在尋找最好的方法,如何添加到實體(產品)的一些參數與值。

例如: 產品T恤將有參數:尺寸:XXL,顏色:紅色,材質:棉。如何使表格具有最佳效果 - 輕鬆將參數添加到產品中,並通過參數設置輕鬆過濾產品。

謝謝您的意見。

+0

您應該將所有這些字段定義爲選項,以便僅允許某些字符串被持久保存到數據庫。看看這個:http://symfony.com/doc/current/reference/constraints/Choice.html –

+0

謝謝你的回答。我現在正在考慮一次,我可能會找出相當好的方式 - 我將使用NestedTree並定義一些參數,並將其作爲我添加值的子項。比我只連接產品與兒童(=參數值)我想...你怎麼看待它? –

+1

它可以工作,但我不知道這是否是最佳選擇。如果我理解了你的第一個問題,你正在嘗試擁有一個'Product'對象,它具有'size'這樣的屬性,可以包含'[XS,S,M,L,XL,...]和類似的屬性。我不認爲你需要嵌套任何東西。如果你只是限制這些選項(只有'XS,S,M,L,XL'爲'尺寸'),這不成問題。除此之外,你可以用'DISTINCT'來做一些簡單的查詢來過濾和類似的東西。我回答了你的問題嗎? –

回答

1

你有兩個選擇:

與另一實體(推薦)

您可以創建一個名爲ProductProperty新的實體,並宣佈從產品到ProductProperty一個一對多的關係,像這樣的一對多關係:

產品實體

/** 
* @ORM\Entity 
*/ 
class Product 
{ 

    /** 
    * @ORM\OneToMany(targetEntity="ProductProperty", mappedBy="product", cascade={"remove"}) 
    */ 
    public $properties; 

} 

的機生產線ctProperty實體

/** 
* @ORM\Entity 
*/ 
class ProductProperty 
{ 

    /** 
    * @ORM\ManyToOne(targetEntity="Product", inversedBy="properties") 
    * @ORM\JoinColumn(name="product_id", referencedColumnName="id") 
    */ 
    public $product; 

} 

創建實體產品數組屬性

學說2支持陣列(它系列化陣列到文本列)。創建一個屬性,其行爲類似於數組:

/** 
* @ORM\Entity 
*/ 
class Product 
{ 

    /** @ORM\Column(type="array") */ 
    public $properties; 

    public function __construct() 
    { 

     $this->properties = []; //new PHP array notation, if using older PHP use array() 

    } 

} 
+0

謝謝你的解決方案和你的時間。這個解決方案對我來說看起來不錯。 –