Основи роботи з базою даних
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: