請幫助我嗎?Doctrine2 - 添加到產品實體參數值
我正在尋找最好的方法,如何添加到實體(產品)的一些參數與值。
例如: 產品T恤將有參數:尺寸:XXL,顏色:紅色,材質:棉。如何使表格具有最佳效果 - 輕鬆將參數添加到產品中,並通過參數設置輕鬆過濾產品。
謝謝您的意見。
請幫助我嗎?Doctrine2 - 添加到產品實體參數值
我正在尋找最好的方法,如何添加到實體(產品)的一些參數與值。
例如: 產品T恤將有參數:尺寸:XXL,顏色:紅色,材質:棉。如何使表格具有最佳效果 - 輕鬆將參數添加到產品中,並通過參數設置輕鬆過濾產品。
謝謝您的意見。
你有兩個選擇:
與另一實體(推薦)
您可以創建一個名爲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()
}
}
謝謝你的解決方案和你的時間。這個解決方案對我來說看起來不錯。 –
您應該將所有這些字段定義爲選項,以便僅允許某些字符串被持久保存到數據庫。看看這個:http://symfony.com/doc/current/reference/constraints/Choice.html –
謝謝你的回答。我現在正在考慮一次,我可能會找出相當好的方式 - 我將使用NestedTree並定義一些參數,並將其作爲我添加值的子項。比我只連接產品與兒童(=參數值)我想...你怎麼看待它? –
它可以工作,但我不知道這是否是最佳選擇。如果我理解了你的第一個問題,你正在嘗試擁有一個'Product'對象,它具有'size'這樣的屬性,可以包含'[XS,S,M,L,XL,...]和類似的屬性。我不認爲你需要嵌套任何東西。如果你只是限制這些選項(只有'XS,S,M,L,XL'爲'尺寸'),這不成問題。除此之外,你可以用'DISTINCT'來做一些簡單的查詢來過濾和類似的東西。我回答了你的問題嗎? –