Доктрина 2 с несколькими индексами - PullRequest
21 голосов
/ 15 ноября 2011

Я занимаюсь разработкой с использованием Zend Framework и Doctrine2.1.

Я создал объекты из базы данных.

Но проблема в том, что Доктрина не распознает мои индексы.Они вообще не помечены в аннотациях сущностей.

И когда я иду в validate-схему и выкидываю sql из orm:schema-tool:update --dump-sql, он генерирует sql, чтобы отбросить все мои индексы по всей базе данных.

Iобнаружил, что в Doctrine есть следующая аннотация, используемая для определения индексов:

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

Но это позволяет мне определить один индекс для нескольких столбцов, и мне это не нужно.
Мне нужна возможностьопределить несколько индексов для нескольких столбцов, один индекс для каждого столбца.

Есть ли способ, которым я могу достичь этого?Есть ли способ, которым я могу иметь аннотацию, которая определяет несколько индексов.

Ответы [ 2 ]

35 голосов
/ 15 ноября 2011

Я бы сказал, что вы можете вставить несколько индексов в свойство indexes (но у него не было времени для его проверки):

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

Надеюсь, это поможет вам

10 голосов
/ 31 января 2014

Вот пример:

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

}
...