5 способів отримати останній доданий ID в Laravel

5 способів отримати останній доданий ID в Laravel
Переклад 3 хв. читання
31 серпня 2023

У Laravel після вставки даних в таблицю бази даних вам може знадобитися отримати останній доданий ID після створення запису. Цей ідентифікатор необхідний для різних завдань, наприклад, для перенаправлення користувачів на новостворений ресурс або для виконання подальших операцій.

У цій статті ми розглянемо декілька методів отримання останнього вставленого ідентифікатора в Laravel за допомогою моделей Eloquent, фасаду БД або прямого доступу до екземпляру PDO. Розгляньмо різні підходи

Спосіб 1: Отримання ідентифікатора вставки за допомогою Model::create

Один з найпоширеніших способів вставити дані в базу даних і отримати останній вставлений ідентифікатор - це використання методу create в моделі Eloquent. Цей метод не тільки вставляє дані, але й автоматично отримує останній вставлений ID. Ви можете легко отримати доступ до ідентифікатора як до властивості як: $user->id. Розглянемо наступний приклад:

use App\Models\User;

$user = User::create([
    'name' => 'Steve Rogers',
    'email' => 'captain.america@marvel.com',
    'password' => bcrypt('password123'),
]);

$lastInsertedId = $user->id;
Зверніть увагу, що коли ви передаєте масив властивостей у функцію create, переконайтеся, що вони визначені як fillable, інакше значення не будуть записані в базу даних. У нашому прикладі це означає, що нам потрібно забезпечити правильне визначення класу User: protected $fillable = ['name', 'email', 'password'];

Спосіб 2: Отримання ідентифікатора вставки за допомогою new Model() та save()

Інший підхід до вставки даних і отримання останнього доданого ID полягає у створенні нового екземпляра моделі, заповненні атрибутів, а потім виклику методу save. Ви можете легко отримати доступ до ідентифікатора як до властивості за допомогою $user->id. Розглянемо наступний приклад:

use App\Models\User;

$user = new User();
$user->name = 'Natasha Romanoff';
$user->email = 'black.widow@marvel.com';
$user->password = bcrypt('password123');
$user->save();

$lastInsertedId = $user->id;

Спосіб 3: Отримання ідентифікатора вставки за допомогою фасаду БД insertGetId()

Якщо вам потрібно вставити дані без використання моделей Eloquent, ви можете скористатися методом insertGetId, який надається фасадом БД.

use Illuminate\Support\Facades\DB;

$lastInsertedId = DB::table('users')->insertGetId([
    'name' => 'Bruce Banner',
    'email' => 'hulk@marvel.com',
    'password' => bcrypt('password123'),
    'created_at' =>  \Carbon\Carbon::now(),
    'updated_at' => \Carbon\Carbon::now(),
]);
Зверніть увагу, що вставка записів цим методом не заповнить автоматично ваші timestamp мітки, навіть якщо вони визначені у вашій міграції. З цієї причини ми включили код для їх генерації вручну за допомогою Carbon у наведений вище код.

Спосіб 4: Отримання ідентифікатора вставки за допомогою Model::insertGetId

Якщо ви вставляєте дані безпосередньо через модель і хочете отримати останній вставлений ідентифікатор, ви можете використати метод insertGetId у самій моделі.

use App\Models\User;

$lastInsertedId = User::insertGetId([
    'name' => 'Clint Barton',
    'email' => 'hawkeye@marvel.com',
    'password' => 'password123',
    'created_at' =>  \Carbon\Carbon::now(),
    'updated_at' => \Carbon\Carbon::now(),
]);

Спосіб 5: Прямий доступ до PDO для доступу до lastInsertId()

Ви також можете отримати прямий доступ до екземпляра PDO для отримання останнього доданого ID.

use Illuminate\Support\Facades\DB;

DB::table('users')->insert([
    'name' => 'Peter Parker',
    'email' => 'spiderman@marvel.com',
    'password' => bcrypt('password123'),
    'created_at' =>  \Carbon\Carbon::now(),
    'updated_at' => \Carbon\Carbon::now(),
]);

$lastInsertedId = DB::getPdo()->lastInsertId();

Висновок

Дотримуючись методів, описаних у цій статті, ви можете легко отримати останній доданий ID за допомогою моделей Eloquent, фасаду БД або прямого доступу до екземпляру PDO. Виберіть метод, який відповідає вашим потребам. Однак, варто зазначити, що метод 1 і метод 2 найчастіше використовуються в застосунках Laravel.

Джерело: 5 Ways to Retrieve the Last Inserted ID in Laravel
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація

Читайте також: eloquent, laravel eloquent, protected $fillable