2015-05-26 5 views
13

Я достаточно доволен работой над проектом с (не) очень согласованными именами столбцов в нашей базе данных MySQL. У нас есть camelCase, PascalCase, «Id», ID, и это сводит меня с ума. Я решил начать использовать Eloquent в нашем приложении (это не Laravel). Я хотел бы иметь способ получения значения первичного ключа легко, не зная имя столбца, например.Получить первичный ключ экземпляра модели Eloquent

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

Есть ли яркий способ сделать это, или мне нужно будет добавить этот метод самостоятельно?

+0

Вы спрашиваете, красноречиво ли это? –

+0

Значок корректен, но вы можете использовать мутаторы во всей своей модели для имени последовательности, например id() (функция внутри модели) http://laravel.com/docs/5.0/eloquent#accessors-and-mutators –

ответ

27

Вы должны иметь определить защищенное поле в вашей модели говорить красноречивым, что столбец первичного ключа является:

protected $primaryKey = 'guid'; 

Тогда вы можете получить доступ к этому ресурсу в модели

getKey() метод этой модели должен дать вам значение первичного ключа, а getKeyName() должно указать вам, какое имя столбца используется для первичного ключа