2015-05-26 14 views
13

Jestem szczęśliwy, że mogę pracować nad projektem z (nie) bardzo spójnymi nazwami kolumn w naszej bazie danych MySQL. Mamy camelCase, PascalCase, 'Id', ID i to doprowadza mnie do szału. Zdecydowałem się zacząć używać Eloquent w naszej aplikacji (która NIE jest Laravel). Chciałbym mieć metodę otrzymywania wartości klucza głównego bez znajomości nazwy kolumny, np.Uzyskaj klucz podstawowy instancji modelu wymownego

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

Czy jest to wymowny sposób, czy też będę musiał sam dodać tę metodę?

+0

Czy pytasz, czy jest to wymowne? –

+0

Mark powiedział, że jest poprawny, ale mimo że można używać mutatorów w całym modelu dla nazwy konsystencji takiej jak id() (funkcja w modelu) http://laravel.com/docs/5.0/eloquent#accessors-and-mutators –

Odpowiedz

27

powinieneś zdefiniować pole chronione w modelu mówi wymowny co kolumna klucz podstawowy jest:

protected $primaryKey = 'guid'; 

Następnie można uzyskać dostęp do właściwości w modelu

getKey() metoda model powinien dać wartość klucza podstawowego, podczas gdy getKeyName() powinna podawać nazwę kolumny klucza podstawowego: