laravel database migrations
Цей підручник пояснює обробку баз даних Laravel, міграції, засівання, необроблені запити SQL, красномовні моделі, красномовні відносини, Artisan та Tinker:
У попередньому підручнику Серія підручників Laravel , ми дізналися про архітектуру, інсталяцію та компоненти Laravel Framework. Ми детально бачили структуру проекту PHP Laravel.
У цьому посібнику ми розглянемо Базу даних Laravel, Міграції, Насіння, Запуск необроблених SQL-запитів, Красномовні моделі, Красномовні відносини, Artisan та Tinker. У всіх прикладах ми використовували версію 7 Laravel.
Що ви дізнаєтесь:
Взаємодія з базою даних Laravel
Laravel Framework взаємодіє з базами даних за допомогою необроблений SQL, конструктор плавних запитів, та Красномовний ОРМ . Він підтримує наступні чотири бази даних.
- MySQL версії 5.6+
- PostgreSQL (Postgres) версія 9.4+
- Версія SQLite 3.8.8+
- Версія SQL Server 2017+
Кроки для підключення проекту до бази даних MySQL:
Крок 1: Створити нову база даних названий db_ академія (Ви можете використовувати будь-яке відповідне ім'я) через phpMyadmin або HeidiSQL .
Крок No2: Створіть новий проект з назвою академія (можна використовувати будь-яке відповідне ім'я).
Примітка:Будь ласка, зверніться до нашого попереднього підручника Laravel Tutorial for Beginners 1, якщо ви не знаєте, як встановити Laravel та створити новий проект.
Крок No3: Відкрийте проект в IDE і відкрийте .env файл. Змінити значення DB_DATABASE (назва бази даних) до db_ академія (можна використовувати будь-яке відповідне ім'я). Обидва назва бази даних і значення DB_DATABASE в .env файл повинен бути однаковим.
Примітка : Можливо, вам доведеться змінити інші параметри бази даних у файлі .env, такі як DB_USERNAME, DB_PASSWOD тощо, залежно від конфігурації бази даних.
На наступному знімку екрана показано конфігурацію бази даних у файлі .env.
Міграції Laravel
Laravel Migration - це спеціальна функція, яка використовується для створення таблиці бази даних. За замовчуванням xxxx_xx_xx_xxxxxx _create_users_table.php файл і xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php файл включені.
Структура міграції Ларавеля
Клас Laravel Migration використовує наступні два методи:
- Метод up (): Цей метод використовується для створення нової таблиці, стовпця або індексу в базі даних.
- Метод down (): Цей метод використовується для скидання наявної таблиці, стовпця або індексу в базу даних. Цей метод протилежний методу up ().
Створення міграції Laravel
Виконайте наступну команду в командному рядку, щоб створити перехід, який називається create_tutors_table .
php artisan make:migrationcreate_tutors_table
Виконання вищевказаної команди створить файл з іменем xxxx_xx_xx_xxxxxx_create_tutors_table.php в база даних / міграції каталог.
Відкрийте xxxx_xx_xx_xxxxxx_create_tutors_table.php файл та змініть існуючий код, як показано нижче.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Запуск міграцій Laravel
Виконайте наступну команду в командному рядку, щоб запустити всі доступні міграції.
php artisan migrate
Вищевказана команда створить відповідні таблиці в базі даних, як показано нижче.
Відкочування міграцій
# 1) Відкат останньої партії міграцій
Виконайте наступну команду в командному рядку, щоб повернути файл остання партія міграцій (це може включати одноразові або багаторазові міграції).
php artisan migrate:rollback
# 2) Відкочування міграцій, що забезпечує крок
Виконайте наступну команду в командному рядку, щоб повернути файл дві останні міграції .
php artisan migrate:rollback --step=2
# 3) Відкат усіх міграцій програми
Виконайте наступну команду в командному рядку до відкотити всі міграції програми.
php artisan migrate:reset
# 4) Відкат і міграція за допомогою однієї команди
Виконайте наступну команду в командному рядку до відкат і мігрувати за допомогою однієї команди.
php artisan migrate:refresh
# 5) Відкат і міграція обмежено міграцій
Виконайте наступну команду в командному рядку до відкотитись і перенести останні два переходи за допомогою однієї команди.
php artisan migrate:refresh --step=2
# 6) Відкиньте всі таблиці та перенесіть
Виконайте наступну команду в командному рядку до скиньте всі таблиці та перенесіть .
php artisan migrate:fresh
Laravel Насіння
Коли ви розробляєте програму, вам потрібні дані для тестування програми. Посів використовується для вставки тестових даних у базу даних.
Створення сівалки
Крок 1: Виконайте наступну команду в командному рядку, щоб створити сійдер із назвою UserSeeder .
php artisan make:seederUserSeeder
Ця команда створить файл з іменем UserSeeder.php в база даних / насіння каталог.
Крок 2: Відкрийте UserSeeder.php файл та змініть існуючий код, як показано нижче.
insert(( 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), )); } }
Крок 3: Відкрийте Файл DatabaseSeeder.php в база даних / насіння каталогу та змініть існуючий код, як показано нижче.
call(UserSeeder::class); } }
Примітка : The DatabaseSeeder class використовується для виклику інших класів насіння.
Запуск сівалок
Крок 1: Виконайте наступну команду в командному рядку до відновити автозавантажувач Composer .
composer dump-autoload
Крок 2: Запустіть наступну команду в командному рядку, щоб запустити DatabaseSeeder клас.
php artisan db:seed
Замість того, щоб запускати наведену вище команду, ви можете запустити таку команду в командному рядку для запуску UserSeeder клас.
php artisan db:seed --class= UserSeeder
Примітка : Виконайте наступну команду в командному рядку до скиньте всі таблиці та повторно запустіть усі міграції .
php artisan migrate:fresh --seed
Крок 3: Перевірте вставлені дані за допомогою бази даних.
База даних буде відображати результати, подібні до наведених нижче:
Запуск необроблених запитів SQL
Запуск запиту вставки
Крок 1: Додайте наступний сегмент коду в routes / web.php файл, щоб вставити новий запис у файл репетитори таблиця.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',('Mr John','Computer Science')); });
Крок 2: Відвідайте URL: http: //academy.test/insert
Крок 3: Перевірте вставлені дані за допомогою бази даних.
База даних буде відображати результати, подібні до наведеного нижче знімка екрана.
Запуск обраного запиту
Крок 1: Додайте наступний сегмент коду в routes / web.php файл для отримання даних з репетитори таблиця, яка має ідентифікатор дорівнює два .
Route::get('/select',function(){ $tutors=DB::select('select * from tutors where id=?',(1)); foreach($tutors as $tutor) { echo $tutor->name.' is teaching '.$tutor->;subject; } });
Крок 2: Відвідайте URL: http: /academy.test/select
Крок 3: Браузер відобразить вихідні дані, подібні до наведеного нижче знімка екрана.
Запуск запиту на оновлення
Крок 1: Додайте наступний сегмент коду в routes / web.php файл для оновлення запису в репетитори таблиця, яка має ідентифікатор дорівнює 1 .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',(1)); return $tutors; });
Крок 2: Відвідайте таку URL-адресу: http: //academy.test/update
Крок 3: Перевірте оновлені дані за допомогою бази даних.
База даних відображатиме вихідні дані, подібні до зображення нижче:
Запуск запиту на видалення
Крок 1: Додайте наступний сегмент коду в routes / web.php файл, щоб видалити запис у репетитори таблиця, яка має ідентифікатор дорівнює 1 .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',(1)); return $tutors; });
Крок 2: Відвідайте URL: http: //academy.test/delete
Крок 3: Перевірте видалені дані за допомогою бази даних.
База даних відображатиме вихідні дані, подібні до зображення нижче:
Красномовні моделі Laravel
В архітектурі MVC характер М виступає за Модель . Модель обробляє дані, що використовуються додатком. Всі моделі зберігаються в додаток каталог. Користувач модель ( User.php) є типовою моделлю. Кожна таблиця бази даних може мати відповідну красномовну модель. Наприклад, Вихователь модель зберігає дані в репетитори таблиця.
Примітка: Ім'я множини класу буде використано як ім'я таблиці, якщо не вказано інше.
Створення красномовної моделі
Виконайте наступну команду в командному рядку, щоб створити модель з іменем Вихователь .
php artisan make:model Tutor
Ця команда створить файл з іменем Викладач.php в додаток каталог.
Замість наведеної вище команди ви можете виконати таку команду в командному рядку, щоб створити файл міграція баз даних при створенні моделі.
php artisan make:modelTutor --migration
Або
php artisan make:modelTutor -m
Обидві вищезазначені команди забезпечать однаковий результат.
Вставити дані
Крок 1: Додайте наступний сегмент коду в routes / web.php файл, щоб вставити новий запис у файл репетитори таблиця.
найкращий шпигунський телефонний додаток для android
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Примітка : Покладіть рису « використовуйте програму Tutor ' в routes / web.php файл, як показано нижче.
Крок 2: Відвідайте таку URL-адресу: http: //academy.test/insert-data
Крок 3: Перевірте вставлені дані за допомогою бази даних.
База даних відображатиме вихідні дані, подібні до зображення нижче:

Знайти дані
Крок 1: Додайте наступний сегмент коду в routes / web.php файл для пошуку / отримання запису в репетитори таблиця, яка має ідентифікатор дорівнює два .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Крок 2: Відвідайте таку URL-адресу: http: //academy.test/find-data
Крок 3: Браузер відобразить вихідні дані, подібні до зображення нижче:

Оновити дані
Крок 1: Додайте наступний сегмент коду в routes / web.php файл для оновлення запису в репетитори таблиця, яка має ідентифікатор дорівнює два .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
або
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(('name'=>'Ms Georgina','subject'=>'Computer Science')); });
Крок 2: Відвідайте таку URL-адресу: http: //academy.test/update-data
Крок 3: Перевірте оновлені дані за допомогою бази даних.
яке найкраще програмне забезпечення для розробки додатків
База даних відображатиме вихідні дані, подібні до зображення нижче:

Видалити дані
Крок 1: Додайте наступний сегмент коду в routes / web.php файл, щоб видалити запис у репетитори таблиця, яка має ідентифікатор дорівнює два .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Крок 2: Відвідайте таку URL-адресу: http: //academy.test/delete-data
Крок 3: Перевірте видалені дані за допомогою бази даних.
База даних відображатиме вихідні дані, подібні до зображення нижче:

М'яке видалення даних
Замість видалення даних з бази даних, м’яке видалення встановлює атрибут, який називається delete_at на моделі та вставте її в таблицю бази даних.
Використовуйте наступну рису, щоб увімкнути м’яке видалення.
Висвітлити Database Eloquent SoftDeletes
Наступний сегмент коду можна використовувати для м’якого видалення даних.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Отримати програмне видалення даних
withTrashed () метод може бути використаний для отримати дані м'якого видалення як показано нижче.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Відновити дані м’якого видалення
відновлювати() метод може бути використаний для відновити м'яке видалення даних - як показано нижче.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Видалити дані назавжди
forceDelete () метод може бути використаний для видалити дані назавжди як показано нижче.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Красномовні відносини Laravel
Красномовний зв’язок допомагає легко пов’язувати таблиці баз даних.
Красномовні типи відносин
У наведеному нижче списку показано різні типи красномовних відносин:
- Відносини один до одного
- Відносини один-до-багатьох
- Відносини багато-до-багатьох
- Має односторонні стосунки
- Має багато-наскрізні стосунки
- Індивідуальні (поліморфні) відносини
- Відношення один до багатьох (поліморфний)
- Відношення багато-до-багатьох (поліморфне)
# 1) Індивідуальні відносини
Опис: Це взаємозв’язок «один на один» між стовпцями різних таблиць.
Приклад взаємовідносин 'один на один':
hasOne('AppBook); } }
Приклад співвідношення один до одного (зворотний):
belongsTo('App Author); } }
# 2) Відносини 'один до багатьох'
Опис: У цьому типі відносин одна модель володіє будь-якою кількістю інших моделей.
Приклад відносин 'один до багатьох':
hasMany('AppReview'); } }
Приклад відношення 'один до багатьох' (зворотний):
belongsTo('AppTutorial'); } }
# 3) Відносини 'багато-до-багатьох'
Опис: Це більш складні відносини, ніж відносини 'один до одного' і 'один до багатьох', і вам потрібно створити зведену таблицю, щоб визначити такі відносини.
Приклад стосунків багато-до-багатьох:
belongsToMany('AppBook); } }
Приклад: багато-до-багатьох (обернений)
belongsToMany('AppAuthor); } }
# 4) Має односторонні стосунки
Опис: Він пов'язує моделі через єдине проміжне відношення.
Приклад взаємозв'язку 'один на один':
hasOneThrough('AppOwner', 'AppCar'); } }
№5) Взаємозв’язок між людьми
Опис: Це дозволяє отримати доступ до віддалених або проміжних відносин простим методом.
Приклад взаємовідносин 'багато-багато':
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Індивідуальні (поліморфні) відносини
Опис: Це схоже на взаємозв'язок 'один на один', але цільова модель може належати до більш ніж одного типу моделі на одній асоціації.
Приклад співвідношення один до одного (поліморфний):
morphTo(); } } class Article extends Model { /** * Get the article's image. */ public function image() { return $this->morphOne('AppImage', 'imageable'); } } class Author extends Model { /** * Get the author's image. */ public function image() { return $this->morphOne('AppImage', 'imageable'); }
# 7) Відношення до багатьох (поліморфні)
Опис: Це схоже на співвідношення 'один до багатьох', але цільова модель може належати до більш ніж одного типу моделі на одній асоціації.
Приклад співвідношення 'один до багатьох' (поліморфний):
morphTo(); } } class Article extends Model { /** * Get all of the article's comments. */ public function comments() { return $this->morphMany('AppComment', 'commentable'); } } class Audio extends Model { /** * Get all of the audio’s comments. */ public function comments() { return $this->morphMany('AppComment', 'commentable'); } }
№8) Відношення багато-до-багатьох (поліморфні)
Опис: У цьому типі відносин цільова модель має унікальні записи, якими можна поділитися серед інших моделей.
Приклад взаємозв'язку 'багато-до-багатьох' (поліморфний):
morphToMany('AppComment, commentable); } }
Майстер Ларавеля
У попередньому підручнику ми це дізналися Ремісник є інтерфейс командного рядка ( CLI ).
Ремісничі команди
Виконайте наступну команду в командному рядку, щоб переглянути всі доступні Ремісничі команди .
php artisan
На наступному скріншоті показано результат роботи вищевказаної команди.

У наступній таблиці наведено деякі важливі команди ремісників з відповідними функціональними можливостями, які взяті з результатів роботи вищезазначеної команди (php artisan).
Команда функціональність кеш: очищений Очистіть кеш програми допомогти Відображає довідку щодо команди список Список команд мігрувати Запустіть міграції бази даних тест Запустіть тести додатків майструвати Взаємодійте із вашим додатком auth: очистити-скинути Змийте маркери скидання пароля, термін дії яких минув db: насіння Насіння бази даних із записами подія: список Перелічіть події програми та слухачів ключ: генерувати Встановіть ключ програми make: канал Створіть новий клас каналу make: компонент Створіть новий клас компонентів подання make: контролер Створіть новий клас контролера make: подія Створіть новий клас подій make: фабрика Створіть нову фабрику моделей make: слухач Створіть новий клас слухача подій зробити: пошта Створіть новий клас електронної пошти make: проміжне програмне забезпечення Створіть новий клас проміжного програмного забезпечення make: міграція Створіть новий файл міграції make: модель Створіть новий клас красномовної моделі make: повідомлення Створіть новий клас сповіщень make: спостерігач Створіть новий клас спостерігача make: policy Створіть новий клас політики make: провайдер Створіть новий клас постачальника послуг make: ресурс Створіть новий ресурс зробити: сівалка Створіть новий клас сівалки make: тест Створіть новий тестовий клас мігрувати: свіжий Відкиньте всі таблиці та повторно запустіть усі міграції перенести: оновити Скиньте та запустіть усі міграції перенести: скинути Відкат усіх міграцій баз даних перенести: відкат Відкат останньої міграції бази даних повідомлення: табл Створіть міграцію для таблиці сповіщень маршрут: список Перелічіть усі зареєстровані маршрути зберігання: посилання Створіть символічні посилання, налаштовані для програми
Ларавел Тинкер
Tinker - це REPL (READ-EVAL-PRINT-LOOP), що дозволяє взаємодіяти з додатком у командному рядку. Тинкер взаємодіє з базою даних без реєстрації маршрутів.
Тинкер використовується з Artisan, і він включає за замовчуванням.
Увімкнення середовища Tinker
Виконайте наступну команду в командному рядку, щоб увімкнути середовище Tinker.
php artisan tinker
На наступному скріншоті показано результат роботи вищевказаної команди.

Вставте дані за допомогою Tinker
Виконайте наступні команди в командному рядку, щоб вставити новий запис у користувачів таблиця.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
База даних буде відображати результати, подібні до наведеного нижче знімка екрана.

Знайдіть дані за допомогою Tinker
Виконайте наступну команду в командному рядку, щоб знайти / отримати запис, який має ідентифікатор дорівнює два в користувачів таблиця.
$user = AppUser::find(2);
У командному рядку відображатиметься вихід, подібний до наступного знімка екрана.

Оновлення даних за допомогою Tinker
Виконайте наступну команду в командному рядку, щоб оновити запис, який має ідентифікатор дорівнює два в користувачів таблиця.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
База даних буде відображати результати, подібні до наведеного нижче знімка екрана.

Видаліть дані за допомогою Tinker
Виконайте наступну команду в командному рядку, щоб видалити запис, який має ідентифікатор дорівнює два в користувачів таблиця.
$user = AppUser::find(2); $user->delete();
База даних буде відображати результати, подібні до наведеного нижче знімка екрана.

Висновок
Laravel Framework взаємодіє з базами даних, використовуючи необроблений SQL, конструктор плавних запитів та Eloquent ORM. Модель обробляє дані, що використовуються додатком. Красномовний зв’язок допомагає легко пов’язувати таблиці баз даних.
Міграція - це спеціальна функція, яка використовується для створення таблиці бази даних. Посів використовується для вставки тестових даних до бази даних, що дуже корисно для розробника, оскільки розробнику потрібні дані для тестування програми під час розробки. Tinker взаємодіє з базою даних без реєстрації маршрутів.
Ми сподіваємось, що цей підручник був вам корисним! У наступному уроці ми обговоримо форми, завантаження файлів, аутентифікацію, надсилання електронних листів, сеанси тощо.
Щасливого навчання!
<< PREV Tutorial | НАСТУПНИЙ підручник >>
Рекомендована література
- Колекція Laravel та підручник Laravel Forge
- Форми Laravel та правила перевірки на прикладі
- Сесія Laravel, завантаження / завантаження файлів та дозволи
- Підручник для початківців PHP Laravel: що таке фреймворк Laravel
- MongoDB Створення резервної копії бази даних
- Тестування баз даних за допомогою JMeter
- Підручник з бази даних Oracle - Що таке база даних Oracle?
- 10 найкращих інструментів проектування баз даних для побудови складних моделей даних