【问题标题】:Doctrine 2 with multiple indexes具有多个索引的原则 2
【发布时间】:2011-12-29 18:58:04
【问题描述】:

我正在使用 zend 框架和教义2.1 进行开发。

我已经从数据库中生成了实体。

但问题是:Doctrine 无法识别我的索引。它们根本没有在实体注释中标记。

当我去 validate-schema 并从 orm:schema-tool:update --dump-sql 转储 sql 时,它会生成 sql 以删除整个数据库中的所有索引。

我发现 Doctrine 有以下用于定义索引的注释:

indexes={@index(name="index_name",
                columns={"database_column1","database_column2"}
        )}

但这允许我为多个列定义一个索引,我真的不需要。
我想要的是能够在多列上定义多个索引,每列一个索引。

有什么方法可以实现吗?有没有一种方法可以让我拥有定义多个索引的注释。

【问题讨论】:

    标签: mysql annotations indexing doctrine-orm


    【解决方案1】:

    我会说你可以在索引属性中插入多个索引(但我没有时间测试它):

    indexes={
    @ORM\Index(name="index_name", columns={"database_column1","database_column2"}),
    @ORM\Index(name="index_name2", columns={"database_column1"}),
    @ORM\Index(name="index_name3", columns={"database_column2"})
    }
    

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。它现在有效。非常感谢。
    • 在哪里声明?
    • 你在类文档块中实体旁边的表中声明它
    • 索引的名称在数据库中是同一个名称还是可以选择其他名称?我在这里很困惑......请帮助
    • @maysaghira 如果您使用教义模式工具生成和更新数据库,请自行选择索引名称,请参阅:doctrine-orm.readthedocs.org/en/latest/reference/…
    【解决方案2】:

    这是一个例子:

    /**
     * @Entity
     * @Table(name="serial_number",indexes={
     *  @index(name="product_idx", columns={"product_id"}),
     * })
     */
    class SerialNumber { // Entity Class
    
        /**
         * @var int
         * 
         * @Id
         * @GeneratedValue
         * @Column(type="integer")
         */
    
        protected $id;
    
        /**
         * @Column(name="created_at", type="datetime")
         * @var \DateTime
         * */
        protected $created;
    
        /**
         * @Column(name="updated_at", type="datetime")
         * @var \DateTime
         * */
        protected $updated;
    
        /**
         * @Column(name="product_id", type="integer")
         */
        protected $productID;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多