Доктрина 2 с несколькими индексами
Я разрабатываю с использованием рамки zend и doctrine2.1.
Я создал объекты из базы данных.
Но проблема в том, что Doctrine не распознает мои индексы. Они вообще не отмечены в аннотациях объектов.
И когда я перехожу к validate-schema и dump sql из orm:schema-tool:update --dump-sql
, он генерирует sql для удаления всех моих индексов по всей базе данных.
Я обнаружил, что Doctrine имеет следующую аннотацию, используемую для определения индексов:
indexes={@index(name="index_name",
columns={"database_column1","database_column2"}
)}
Но это позволяет мне определить один индекс для нескольких столбцов, и мне это действительно не нужно.
Я хочу, чтобы определить несколько индексов для нескольких столбцов, по одному индексу на столбец.
Есть ли способ, которым я могу это достичь? Есть ли способ, которым я могу иметь аннотацию, которая определяет несколько индексов.
Ответы
Ответ 1
Я бы сказал, что вы можете вставить несколько индексов в свойство 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"})
}
Надеюсь, это поможет вам
Ответ 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;
}