映射Doctrine2的多个复合主键

时间:2012-12-11 09:59:09

标签: doctrine-orm

我一直在搜索DB Schema的确切映射,如下所示Sample Database Schema

可以看出product_i18n表有两个复合外键(product_id和locale_id)。

现在,一旦产品和区域设置实体完成,我想将数据(名称和描述)插入到product_i18n表中。

是否有一个类似于使用Doctrine 2的此类映射的示例。或者,如果某个人可以简要概述如何处理这种类型的映射,那么您的信息将受到赞赏。

P.S。如果需要更多关于此的信息,请不要犹豫。

2 个答案:

答案 0 :(得分:8)

Doctrine 2本身支持复合键

/**
 * @Entity
 */
class ProductI18N
{
    /** @Id @Column(type="string") */
    private $product;
    /** @Id @Column(type="string") */
    private $locale

    public function __construct($product, $locale)
    {
        $this->product= $product;
        $this->locale= $locale;
    }

请记住,在保留模型之前必须先设置复合键:

$productI18N = new ProductI18N("Guanabana", "CR");
$em->persist($productI18N );
$em->flush();

有关您的更多信息,请参阅文档: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html

答案 1 :(得分:3)

如果您在字段1(id autoincrement)和字段2(指定)中有复合键,请使用:

class ProductI18N
{
    /** @Id @Column(type="string") @GeneratedValue(strategy="AUTO") */
    private $product;
    /** @Id @Column(type="string") @GeneratedValue(strategy="NONE") */
    private $locale