具有多个索引的原则 2

发布于 2024-12-15 10:13:25 字数 488 浏览 1 评论 0原文

我正在使用zend框架和doctrine2.1进行开发。

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

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

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

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

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

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

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

I am developing using zend framework and doctrine2.1.

I have generated entities from database.

But the problem is: Doctrine doesn't recognize my indexes. They are not marked in entity annotations at all.

And when I go to validate-schema and dump sql from orm:schema-tool:update --dump-sql it generates sql to drop all my indexes across whole database.

I found that Doctrine has following annotation used for defining indexes:

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

But this allows me to define one index for multiple columns and I don't really need that.
What I want is the ability to define multiple indexes on multiple columns, one index per column.

Is there a way I can achieve this? Is there a way that I can have annotation that defines multiple indexes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

廻憶裏菂餘溫 2024-12-22 10:13:25

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

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"})
}

希望这对你有帮助

I would say you can insert multiple indexes in the indexes property (but I haven't had the time to test it):

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"})
}

Hope this helps you

倾城月光淡如水﹏ 2024-12-22 10:13:25

这是一个例子:

/**
 * @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;

}

Here is an example:

/**
 * @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;

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文