65 Stimmen

Wie kann ich mit Doctrine 2 einen INDEX zu einer Spalte hinzufügen, ohne sie zu einem Primärschlüssel zu machen?

Ich möchte einen Index zu einer Tabellenspalte in meiner MySQL-Datenbank hinzufügen. Ich verwende Doctrine 2, um meine Datenbankschemas zu erstellen.

Ich weiß, dass ich

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

verwenden kann, um Primärschlüssel zu erstellen. Aber meine Spalte soll weder das unique- noch das primary key-Attribut haben. Es soll einfach ein index in meiner Tabelle sein (MySQL kennt diese drei Typen).

Was ist die richtige Anweisung, um einen solchen Index zu erstellen?

98voto

Flip Punkte 4678

Wenn Sie mit Doctrine arbeiten möchten, muss eine Tabelle einen Primärschlüssel haben, siehe:

Jede Entitätsklasse muss einen Bezeichner/Primärschlüssel haben. Sie können das Feld, das als Bezeichner dient, mit der @Id-Annotation auswählen.
Referenz: Bezeichner und Primärschlüssel

Um einen Index zu erstellen: Annotationsreferenz

`

Beachten Sie, dass dies nur verwendet wird, wenn Sie das Schema aus Ihrem PHP-Code generieren. Falls Ihre Tabelle bereits existiert, können Sie auch selbst einen Index hinzufügen.

`

53voto

websky Punkte 2832

Wenn Sie Doctrine und ORM verwenden:

@ORM\Table(indexes={@ORM\Index(name="name_idx", columns={"name"})})

16voto

long Punkte 3380

13voto

Samir Patel Punkte 759

Wenn Sie Symfony mit Doctrine verwenden, müssen Sie auch die Index-Klasse verwenden, damit die Annotation ordnungsgemäß funktioniert

use Doctrine\ORM\Mapping\Index;

8voto

Vasilii Suricov Punkte 665

Teil des Arbeitscodes

Verwenden von Doctrine\ORM\Mapping wie ORM;

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\CountryRepository")
 * @ORM\Table(indexes={@ORM\Index(columns={"slug"})})
 */
class Country extends AbstractTrans implements SuggesterItem

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X