Laravel робить роботу з БД надзвичайно простий завдяки можливості роботи на трьох рівнях: на чистому SQL, через конструктор запитів fluent query builder. через об'єктні моделі Eloquent ORM. Laravel підтримує чотири СУБД:
Файл налаштування БД знаходиться в config / database.php. У ньому можна опеределить все підключення до БД, задати підключення за замовчуванням. Також в файлі є приклади для всіх СУБД. Конфігурація за замовчуванням готова для роботи з віртуальною машиною Laravel Homestead. яка зручна для розробки на локальній машині. Звичайно, ви можете змінювати конфігурацію у файлі під ваші потреби.
Налаштування SQL Server
SQL Server Configuration
Laravel підтримує SQL Server "з коробки", проте, в файл настройки потрібно додати параметри підключення:
Підключення для читання / запису
Якщо необхідно налаштувати роздільні підключення для читання (SELECT) та зміни даних (INSERT, UPDATE, and DELETE), то Laravel позваоляет це зробити на одному диханні. Відповідне підключення буде автоматично використовуватися при роботі з БД будь-яким із способів: чистий SQL, конструктор запитів, об'єктні моделі (Eloquent ORM)
Приклад налаштування роздільних підключень для читання / запису:
Зверніть увагу, що в масив настройки були додані два ключа: read and write. Кожен з них є масивом, в якому міститься єдиний ключ: host. Решта опцій підключень є загальними і задані безпосередньо в масиві mysql.
Таким чином, нам потрібно буде додавати параметри в масиви read і write. тільки, якщо ми хочемо переписати значення цих параметрів в основному масиві. Так в наведеному прикладі хост 192.168.1.1 буде використовуватися для читання, а 192.168.1.2 для запису. Облікові дані, префікс, кодування і всі інші опції в масиві mysql будуть загальними для обох підключень.
Запити на чистому SQL
Після настройки підключення до БД ви можете робити запити, використовуючи фасад DB. Фасад надає методи для кожного типу запиту: select. update. insert. delete. і statement.
SQL запити
Для простого запиту ми можемо використовувати метод select фасаду DB:
Перший аргумент методу select - це рядок, що містить запит на чистому SQL, другий аргумент - масив зі значеннями, підставляє в запит. Зазвичай ці значення використовується у виразі where. Така прив'язка параметрів захищає від SQL ін'єкцій.
Метод select завжди повертає масив. Кожне значення в масиві буде об'єктом PHP StdClass. які надають доступ до значень результату запиту:
Іменовані параметри запиту
Замість використання. вказує на прив'язку параметра до запиту, ви можете використовувати ім'я:
Для вставки записів в БД використовується метод insert фасаду DB. Використання методу подібно методу select. де перший аргумент - запит на SQL, другий - параметри:
оновлення
Метод update використовується для оновлення записів в БД. Повертає кількість оновлених рядків:
Метод delete використовується для видалення записів з таблиці. Повертає кількість вилучених рядків:
Інші запити до БД
Використовуйте метод statement фасаду DB:
Постобработчік запитів
Якщо ви хочете отримувати кожен SQL запит, виконаний додатком, використовуйте метод listen. Цей метод корисний для логування та налагодження запитів. Реєстрація постобработчіка в service provider:
транзакції
Для використання транзакцій призначений метод transaction фасаду DB. Якщо буде кинуто виключення в функції-замиканні, то транзакція буде скасована. Якщо транзакція успішна, то вона буде автоматично завершена (committed). Вам не потрібно вручну робити відкат або завершення (committing) при використанні цього методу:
ручні транзакції
Якщо потрібно почати транзакцію вручну і мати повний контроль над відкатами і завершеннями використовуйте метод beginTransaction фасаду DB:
Примітка: Використовуйте перераховані методи для ручного управління транзакціями при роботі з query builder і Eloquent ORM.
Використання декількох підключень до БД
При використанні декількох підключень доступ до кожного з них можна отримати через метод connection. Методу необхідно передати ім'я підключення, яке повинно відповідати одному з імен у файлі налаштування БД config / database.php:
Ви також можете отримати низькорівневий об'єкт PDO для поточного підключення: