Основи роботи з базою даних

Laravel робить процес з'єднання з БД та виконання запитів дуже простим. Налаштування роботи з БД зберігаються у файлі config/database.php. Тут ви можете вказати всі використовувані з'єднання до БД, а також вказати, яке з них буде використовуватися за умовчанням. Приклади налаштування всіх можливих видів підключень знаходяться у цьому файлі.

На даний момент Laravel підтримує 4 СУБД: MySQL, Postgres, SQLite та SQL Server.

Роздільне читання та запис

Можливо, іноді вам знадобиться одне з'єднання для виконання запиту SELECT, а інше для запитів INSERT, UPDATE і DELETE. Laravel максимально спрощує цей процес, причому не важливо, що ви використовуєте - сирі запити, наприклад, DB::select() , Query Builder або Eloquent ORM.

Розглянемо приклад конфігурації:

Зауважте, два ключі були додані до масиву налаштувань: read і write . Обидва містять єдиний ключ: host . Інші налаштування для обох цих операцій однакові і беруться з масиву mysql. При необхідності зміни та інших налаштувань (не тільки host), просто додайте інші ключі в read і write, які перезапишуть такі ж налаштування в головному масиві. Таким чином, 192.168.1.1 буде використовуватись для читання, а 192.168.1.2 – для запису. Інші налаштування збігаються.

Виконання запитів

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

Виконання запиту SELECT

Метод select завжди повертає масив результатів.

Виконання запиту INSERT

Виконання запиту UPDATE

Виконання запиту DELETE

Примітка: запити update та delete повертають число порушених рядків.

Виконання запиту іншого типу

Реагування навиконання запитів

Ви можете додати власний обробник, який викликається при виконанні чергового запиту, за допомогою методу DB::listen:

Транзакції

Для виконання запитів усередині однієї транзакції скористайтеся методом transaction :

Примітка: Будь-яка помилка, отримана при виконанні запитів транзакції, скасує всі зміни, спричинені їй.

Іноді вам доведеться розпочати транзакцію вручну:

Скасування транзакції та змін, викликаних її виконанням:

Завершення та підтвердження транзакції:

Доступ до з'єднань

При використанні декількох підключень до БД, ви можете отримати до них доступ через метод DB::connection :

Ви також можете отримати низькорівневий об'єкт PDO цього підключення:

Іноді вам може знадобитися підключитися до БД і ви можете зробити це так:

Якщо вам потрібно відключитися від БД - наприклад, щоб не перевищити ліміт max_connections в БД, ви можете скористатися методом disconnect :

Журнал запитів

За замовчуванням Laravel записує всі SQL-запити в пам'яті, виконані в рамках поточного HTTP-запиту. Однак, у деяких випадках, як, наприклад, при вставці великої кількості записів, це може бути занадто ресурсом. Для відключення журналу можна використовувати метод disableQueryLog :

Для отримання масиву виконаних запитів використовуйте метод getQueryLog: