php - 在 Doctrine 2 中,如何将列标记为非主键?

标签 php mysql doctrine-orm doctrine

我已经在数据库中创建了一个表,其中有 2 个键,一个是 PRI 键,另一个是 MUL 键。我如何告诉 Doctrine 将 MUL 键标记为键的列?如果我理解正确的话,@ID 将不起作用,因为它不是主键,@Index 将不起作用,因为表已经创建。

代码目前如下所示:

/**
 * @ORM\Entity
 * @ORM\Table(name="mytablename")
 **/
class MyTablename implements IMyTablename
{
    /**
     * @ORM\Id
     * @ORM\Column(type="string", name="id", length=40)
     */
    protected $id;

    /**
     * @ORM\Column(type="string", name="ccode", length=5)
     */
    protected $ccode;

    ...

}

我想将 ccode 标记为 key 。

最佳答案

Doctrine 允许您通过 @Index 定义索引(UNIQUE、INDEX,甚至自 Doctrine 2.5 以来的 FULLTEXT)。注解。由于主键对于每个实体都是强制性的,因此它有一个特殊的 @Id注解。仅此而已。

但是既然您已经在问题中提到了这一点,我想对 MUL 键所扮演的真正角色存在误解,即。一个基本的索引。特别是,这种类型的索引仅涉及性能,并且您的实体不能要求其正常工作(当然性能问题除外)。我鼓励您阅读更多有关索引的文献或澄清您的问题。

关于php - 在 Doctrine 2 中,如何将列标记为非主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38253647/

相关文章:

symfony - 使用 "namespace"在 Symfony2 中使用 Doctrine 创建一个新实体

php - 使用外部 SQL 数据库使 Doctrine 实体保持最新

php - 如何添加将 WC_Product_Variable 扩展到购物车的自定义 WooCommerce 产品类型

php - PHP 和 MySQL 中 undefined variable 索引

mysql - 使用 between 子句的 Codeigniter 数据库错误

php - @PrePersist 在 merge() 中调用,但不在 persist() 中调用 : what Lifecycle callback should I use?

php - 将 XML 数组转换为 XML 时出现奇怪的文本

php - 确定字符串是否包含数组中的一组单词中的一个

phpMyAdmin 替换查询

mysql - 在 mysql 中存储密码...使用哈希对吗?但是如何向用户发送忘记的密码呢?