2015-05-26 4 views
13

Ich bin glücklich genug, an einem Projekt mit (nicht) sehr konsistenten Spaltennamen in unserer MySQL Datenbank zu arbeiten. Wir haben camelCase, PascalCase, 'Id', ID und es macht mich verrückt. Ich habe mich entschieden, Eloquent in unserer Anwendung (die NICHT Laravel ist) zu verwenden. Ich würde gerne eine Methode haben, um den Wert des Primärschlüssels leicht zu erhalten, ohne den Spaltennamen zu kennen, z.Erhalte Primärschlüssel der Eloquent Modellinstanz

// User's primary key column is called UserID 
$user = User::find(1337); 
$userId = $user->id(); // = 1337 

Gibt es eine beredte Art, dies zu tun, oder muss ich diese Methode selbst hinzufügen?

+0

Fragen Sie, ob das eloquent ist? –

+0

Mark sagte, ist richtig, aber obwohl Sie Mutatoren in Ihrem ganzen Modell für Konsistenz Namen wie ID() (Funktion innerhalb des Modells) http://laravel.com/docs/5.0/eloquent#accessors-and-mutators verwenden können –

Antwort

27

Sie sollten einen geschützten Bereich in Ihrem Modell haben definieren Eloquent zu sagen, was die Primärschlüsselspalte ist:

protected $primaryKey = 'guid'; 

Dann Sie diese Eigenschaft in Ihrem Modell

Die getKey() Methode des Modells Sie

Zugriff geben sollte Wert des Primärschlüssels, während getKeyName() Ihnen sagen sollte, welcher Spaltenname für den Primärschlüssel verwendet wird