Данный пост непосредственно связан с предыдущими постами в этой рубрике. Здесь мы рассмотрим пример добавления полей, переданных посредством HTTP-запроса в базу данных.
Для добавления в базу данных мы будем использовать объект модели базы данных. Модели, согласно концепции MVC, в Laravel выполняют функцию промежуточного звена между базой данных и контроллером. Ранее на нашем сайте уже был пост про создания новой модели.
Теперь собственно к коду контроллера, который находится по пути:
\app\Http\Controllers\ContactController.php
Код контроллера оформлен классическим образом, в начале файла используя оператор use мы подключаем нужные классы. Среди этих классов – модель App\Models\Contact, о создании которой говорилось в предыдущем посту. Далее идёт непосредственно сам класс контроллера ContactController. В этом классе есть метод submit(), которому собственно и передаются поля из запроса.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests\ContactRequest; use App\Models\Contact; class ContactController extends Controller { // public function submit(ContactRequest $req){ // add to base $contact = new Contact(); $contact->person_name = $req->input('person-name'); $contact->person_email = $req->input('email'); $contact->message = $req->input('message'); $contact->save(); // redirect to home return redirect()->route('home'); } } ?>
Внутри метода submit() создаётся объект класса – модели Contact, посредством которого будут добавляться данные в базу. Обращение к полям происходит в стиле ORM. После того, как поля были установлены, сохранение происходит посредством метода save(). Далее следует перенаправление на главную страницу, строка:
return redirect()->route('home');
Если нам нужно отобразить какое-либо сообщение об успешном добавлении, мы можем выполнить перенаправление немного иначе.
return redirect()->route('home')->with('success', 'Сообщение было добавлено!');
Тут мы добавили сообщение в сессию, соответственно в шаблоне главной страницы следует сделать вывод данного сообщения из сессии.
@if(session('success')) <div class="aler alert-success"> {{ session('success') }} </div> @endif
Таким образом, отправив данные на форме, поля будут записаны в БД, затем будет редирект на главную страницу, где мы увидим сообщение об успешном добавлении записи.