Атрибут primaryKey
Атрибут primaryKey в классе модели Eloquent позволяет указать,
какое поле базы данных должно использоваться в качестве первичного ключа.
По умолчанию Laravel предполагает, что каждая модель имеет столбец
с именем 'id'. Однако если ваша таблица использует другое имя
для первичного ключа, например 'user_id' или 'product_uuid',
вы можете переопределить этот атрибут в модели. Это свойство влияет
на работу методов find, findOrFail, а также на связывание
моделей в отношениях и при генерации URL-адресов через модели.
Синтаксис
<?php
class Model extends Model
{
protected $primaryKey = 'имя_поля';
}
?>
Пример
Стандартное использование атрибута для указания нестандартного названия первичного ключа:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
protected $primaryKey = 'user_id';
}
?>
<?php
use AppModelsUser;
$user = User::find(5);
echo $user->user_id;
?>
Результат выполнения кода:
"5"
Пример
Использование атрибута primaryKey вместе с методами
поиска для получения модели по указанному ключу:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Product extends Model
{
protected $primaryKey = 'product_uuid';
}
?>
<?php
use AppModelsProduct;
$product = Product::find('abc-123-def');
echo $product->product_uuid;
?>
Результат выполнения кода:
"abc-123-def"
Пример
Если в модели не указан атрибут primaryKey, Laravel
по умолчанию использует поле 'id':
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Category extends Model
{
// Атрибут primaryKey не задан,
// по умолчанию используется 'id'
}
?>
<?php
use AppModelsCategory;
$category = Category::find(3);
echo $category->id;
?>
Результат выполнения кода:
"3"
Смотрите также
-
атрибут
incrementing,
который управляет автоинкрементом первичного ключа -
атрибут
keyType,
который задаёт тип данных первичного ключа -
атрибут
table,
который определяет имя таблицы для модели -
метод
getKey,
который возвращает значение первичного ключа модели