О web-разработке
и даже немного больше...

Добавление записи в БД из контроллера Laravel

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

Таким образом, отправив данные на форме, поля будут записаны в БД, затем будет редирект на главную страницу, где мы увидим сообщение об успешном добавлении записи.

Опубликован: 25.03.2021 г.

См. также:

Как просмотреть SQL запрос в Eloquent Laravel?
Как объявить переменную в шаблоне Laravel Blade?
Проверка на пустоту коллекций Eloquent в Laravel
Как получить URL текущей страницы в Laravel?
Как вывести роуты Laravel в отдельный файл?
Как получить случайные записи из БД в Laravel?
Ограничение выборки (LIMIT) данных в Laravel
Как перенести Laravel на боевой сервер?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта