LARAVEL #5 3.12.2020 – 4.12.2020, kolmapäev – neljapäev. Sisestatud 10. detsember 2020
Модели и добавление данных в БД
1. Модели существуют для комфортной работы с таблицами БД
2. Чтобы работать с БД, надо ее создать
3. Создаем БД
4. Открываем программу, которая является локальным сервером
5. В первом уроке мы говорили, что создаем проект в папке htdocs
6. Запускаем локальный сервер
7. Автоматически открывается страничка в браузере localhost
8. Здесь откроем PMA, где и создадим БД
9. В MAMP нажимаем Open Webstart page
10. И здесь есть ссылка на PMA
11. PMA – это графический интерфейс для работы с БД
12. Заходим в PMA, меняем язык на русский
13. Создаем БД
14. Нажимаем “Создать БД”
15. Называем БД как угодно. Например, laravel_blog
16. Выбираем кодировку utf8_general_ci
17. Нажимаем “создать”
18. MAMP нельзя закрывать, а то потеряем доступ к PMA
19. Должны быть запущены MAMP, laravel сервер и nodejs – Для работы сайта
20. Если все запущено, если БД создана, то теперь нам необходимо подключиться к БД нашего
проекта
21. Переходим в файл .env
22. Находим DB_CONNECTION = mysql
23. DB_HOST = localhost
24. Копируем порт DB_PORT = 8889
25. Также меняем название DB_DATABASE = laravel_blog
26. Login пользователя и пароль пользователя,
DB_USERNAME = root
DB_PASSWORD = root
27. Подключение к БД выполнено
28. Теперь надо заполнить БД табличками и различными значениями
29. Чтобы заполнить БД значениями и таблицами, нам нужно создать модели
30. Идем в терминал, переходим в каталог itproger
31. Пишем php artisan make:model Contact -m
Благодаря -m мы создаем не только модель, но и файл миграции
32. Файл миграции – это файл, который описывает одну таблицу БД
33. Создается модель и файл миграции
34. APP\Models\contact.php – создает папку Models\contact
35. Поменять namespace в файле ContactController.php
use app\Models\contact
36. Это файл, с помощью которого мы создадим таблицу contacs в БД
37. Посмотрим файл миграции
37.1 Подключение класса, наследование от Migration. create_contact_table.php
38. Здесь есть две функции: up и down
39. Функция up() запускается, когда мы запускаем миграцию
40. Здесь пишут создание новой таблицы, добавление новых полей и тд
41. Когда запускаем миграцию, будет создана новая таблица, будут добавлены значения
42. Функция down() вызывается, чтобы отменить определенное действие
43. Например, создаем таблицу contacts, а потом передумаем. Вызываем миграцию с определенным
условием, которая вызывает функцию down(), если она существует
44. Функция up вызывается, когда мы запускаем миграцию, а функцию down сами вызываем
45. В функции down() пишем, что мы удаляем одно из полей
46. Или что удаляем всю таблицу
47. Функция up создаст пока что таблицу с двумя полями
48. В любой таблице должно быть поле id. Оно добавляет уникальность к каждой записи
49. Добавить еще 4 поля
50. $table->string(‘поле’). Автоматически будет добавлен namespace
51. email, subject (255 символов)
52. Различные типы представлены в документации
53. Boolean – true или false
54. Теперь надо провести миграцию
55. Заходим в PHPMyAdmin
56. Заходим в БД laravel_blog
57. Создается дополнительная таблица migrations
58. $table->timestamps создает новые поля created_at и updated_at. В эти поля помещается
дата создания записи и дата обновления.
59. Чтоб сделать откат от предыдущих настроек, php artisan migrate:rollback
60. Rollback вызывает функцию down(), то есть вернем одно предыдущее действие назад
61. Если хотим вернуть 3 действия назад, то указываем php artisan migrate:rollback –step=3,
то есть 3 предыдущих миграции будут отменены
62. Чтоб отменить все миграции, надо написать php artisan migrate:reset
63. Таблица migration всегда присутствует и никогда не удаляется
64. clear очищает терминал
65. Пишем php artisan migrate
66. Создаются таблицы с полями
67. Реализуем добавление значений в БД
68. Переходим в APP/http/Controllers/ContactController.php
69. Указываем, что мы используем модель contact
70. Сохранить данные, получить данные. Это заложено в модели. Эти функции наследуются от
класса Model. В этой модели ничего менять не надо. Надо только обратиться к ней.
71. В APP/http/Controllers подключаем класс use APP/Models/Contact
72. public function submit(ContactRequest $req)
Создаем объект на основе модели Contact
$contact = new Contact()
$contact->name = $req->input(‘name’)
То же самое делаем для других полей таблицы и для полей формы.
73. Чтобы сохранить данные в таблицу, обращаемся к функции save:
$contact->save();
74. Теперь переадресуемся с contact/submit на главную страницу.
Обращаемся к встроенной функции redirect():
return redirect()->route(‘home’)
75. На странице contacts заполняем значения и нажимаем сохранить
76. Возникает ошибка. Забыли очистить кэш
77. php artisan config:cache очищает
78. Теперь сохранение данных срабатывает корректно
79. Наше сообщение сохранилось в БД и мы переадресовались на главную страницу
80. Идем в PHPMyAdmin, нажимаем browse.
Введенное в форму сохранилось.
81. Вывести пользователю сообщение, что все обработалось корректно, сообщение добавлено в БД
82. Создаем новый blade файл
83. Переходим в Resources/views/inc/
84. Создаем новый файл messages.blade.php
85. В этом файле будем выводить сообщения об ошибках, а также разные сообщения, например,
что вы добавляли в БД
86. Из contact.blade.php отображение всех ошибок переместим в inc/messages
@if($errors->any())
<div>
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}
</ul>
</div>
@endforeach
@endif
87. Дополнительно надо отображать все успешные сообщения
88. Отслеживаем сессию ‘success’
@if(session(‘success’))
<div class=”alert alert-success”>
{{session(‘success’)}}
89. Переходим в resources/views/layouts/app.blade.php
Под inc.hero выводим эти сообщения.
В блоке <div class=”container mt-5″>
пишем @include(’inc.message’)
90. Теперь вызов этой сессии. Переходим в APP/http/Controllers/ContactController.php
91. return redirect()->route(‘home’)->with(‘success’,’Сообщение было добавлено’);
92. Сохраняем, переходим в contacts
93. Сначала проверяем, как работают ошибки, пробуем сохранить с пустыми полями
94. Введем данные и нажимаем отправить
95. Переадресовываемся на главную страницу
96. Заходим в PMA, видим, что сообщение добавилось
97. Здесь также добавляется дата добавления и обновления сообщения