56

我想为我的 MySQL 数据库中的表列添加索引。我正在使用 Doctrine 2 创建我的数据库模式。

我知道我可以使用

/** @Id @Column(type="integer") */

创建主键。但是我的专栏既不应该unique也没有primary key属性。它应该只是index在我的表中(MySQL 知道这三种类型)。

创建这样一个索引的正确语句是什么?

4

4 回答 4

91

如果要使用原则,表必须具有主键,请参阅:

每个实体类都必须有一个标识符/主键。您可以选择用作带有@Id注释的标识符的字段。
参考:标识符和主键

创建索引:注解参考

<?php
/**
 * @Entity
 * @Table(name="ecommerce_products",indexes={
 *     @Index(name="search_idx", columns={"name", "email"})
 * })
 */
class ECommerceProduct
{
}

请注意,这仅在您从 PHP 代码生成模式时使用。因此,如果您的表已经存在,您也可以自己添加索引。

于 2013-08-04T19:26:18.640 回答
46

当你使用 Doctrine 和 ORM 时:

@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})
于 2014-12-13T05:39:32.503 回答
13

如果您将 Symfony 与教义一起使用,您还需要上课才能use使Index注释正常工作

use Doctrine\ORM\Mapping\Index;
于 2016-07-14T21:35:00.670 回答
5

部分工作代码

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\CountryRepository")
 * @ORM\Table(indexes={@ORM\Index(columns={"slug"})})
 */
class Country extends AbstractTrans implements SuggesterItem
于 2020-04-30T12:31:34.967 回答