Данный пост непосредственно связан с предыдущими постами в этой рубрике. Здесь мы рассмотрим пример добавления полей, переданных посредством 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
Таким образом, отправив данные на форме, поля будут записаны в БД, затем будет редирект на главную страницу, где мы увидим сообщение об успешном добавлении записи.