Laravel 4: Wie erstelle ich ein nicht-primärer auto-increment-Spalte mit Migrationen?

Ich arbeite aktuell an einer Laravel 4-Projekts, bestehend aus einem master-server und viele clients. Die Kunden erstellen, die Daten und sendet diese an den master-server. Um Konflikte zu vermeiden, ich bin mit UUID v4 als Primärschlüssel.

Jedoch, sobald die Daten auf dem server erstellt will ich weisen Sie eine einzigartige auto-increment-integer, so ist es einfacher für die Benutzer zu identifizieren, die Daten. Zum Beispiel: Anstatt zu sprechen über item 5a8e896d-3ab4-48d2-9d39-faeb5227f012 ein Benutzer sprechen kann, über item #24567

Halten meine app verwaltbar ich bin mit Migrationen, meine aktuelle migration für diese Tabelle sieht wie folgt aus:

public function up()
{
    Schema::table('items', function($table)
    {
        $table->create();
        $table->string('id')->primary(); //'id' For the purpose of keeping the ORM working, this field stores the UUID.
        $table->integer('number', true); //The human readable item number, the second parameter is true for auto-increment
        $table->text('otherdata');
        $table->timestamps();
    });
}

Das problem ist, dass Laravel automatisch wird ein primärer Schlüssel bei der Definition von auto-Inkrement-und so die migration endet, bis zu scheitern, weil es gibt zwei primäre Tasten.

[Exception] SQLSTATE[42000]: Syntax error or access violation: 1068 Multiple primary key defined
  (SQL: alter table `items` add primary key items_id_primary(`id`)) (Bindings: array ())

Gibt es eine Möglichkeit, um eine Tabelle mit einem Primärschlüssel und einem separaten auto-increment Feld mit Laravel 4-Migrationen.

Schreibe einen Kommentar