Doctrine2 - 使用值添加到product实体参数

时间:2014-01-24 17:17:57

标签: php doctrine-orm mapping

拜托,你能帮助我吗?

我正在寻找最好的方法,如何向实体(Product)添加一些带有值的参数。

例如: 产品T恤有参数:尺寸:XXL,颜色:红色,材质:棉。如何使表格获得最佳结果 - 轻松地将参数添加到产品中,并通过参数轻松过滤产品。

感谢您的意见。

1 个答案:

答案 0 :(得分:1)

您有两种选择:

OneToMany与其他实体的关系(推荐)

您可以创建一个名为ProductProperty的新实体,并声明从Product到ProductProperty的OneToMany关系,如下所示:

产品实体

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

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

}

ProductProperty实体

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

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

}

在实体产品

中创建数组属性

Doctrine 2支持数组(它将数组序列化为TEXT列)。创建一个行为类似于数组的属性:

/** 
 * @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()

    }

}