Полный цикл в digital

Resource Controllers

Resource Controllers используется в Laravel для простого выполнения операций CRUD. Когда создаем Resource Controllers с помощью команды artisan из терминала, внутри контроллера будут созданы все необходимые методы, связанные с операциями CRUD. Он обрабатывает все HTTP-запросы для приложения и требует одной строки кода для маршрутов.

Подготовка

Нам потребуется таблица в базе данных к которой подключен проект Laravel. В этом руководстве я использовал дефолтную таблицу users для выполнения операции CRUD с использованием Resource Controllers.

Создание Resource Controllers

Выполняем следующую команду из терминала, чтобы создать Resource Controllers с именем UserController:

php artisan make:controller UserController --resource

Открываем созданный контроллер, внутри автоматически создаются семь методов для выполнения CRUD операций:

App/Http/Controllers/UserController.php<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{
    // Показать список ресурсов @return \Illuminate\Http\Response
    public function index()
    {
        //
    }
    // Показать форму для создания нового ресурса @return \Illuminate\Http\Response
    public function create()
    {
        //
    }
    // Хранить вновь созданный ресурс в хранилище @param  \Illuminate\Http\Request  $request @return \Illuminate\Http\Response
    public function store(Request $request)
    {
        //
    }
    // Показать указанный ресурс @param  int  $id @return \Illuminate\Http\Response
    public function show($id)
    {
        //
    }
    // Показать форму для редактирования указанного ресурса @param  int  $id @return \Illuminate\Http\Response
    public function edit($id)
    {
        //
    }
    // Обновить указанный ресурс в хранилище @param  \Illuminate\Http\Request  $request @param  int  $id @return \Illuminate\Http\Response
    public function update(Request $request, $id)
    {
        //
    }
    // Удалить указанный ресурс из хранилища @param  int  $id @return \Illuminate\Http\Response
    public function destroy($id)
    {
        //
    }
}

Маршруты

Добавьте следующий маршрут для UserController, автоматически будут созданы семь маршрутов, для вызова семи методов дополни:

routes/web.phpRoute::resource('users', UserController::class);

Выполняем следующую команду из терминала и проверяем текущий список маршрутов из файла web.php:

php artisan route:list

Вставка, метод create()

Измените метод create() контроллера UserController следующим кодом:

App/Http/Controllers/UserController.phppublic function create()
{
    $user = new User;
    $user->name = 'fahmida';
    $user->email = 'fahmida@gmail.com';
    $user->password = Hash::make('12345');
    try{
        $user->save();
        echo "Запись вставлена";
    }
    catch (\Illuminate\Database\QueryException $e) {
        echo "Повторяющаяся запись";
    }
}

Маршрут для вызова метода create()название_домена.ru/users/create.

Все записи, метод index()

Измените метод index() контроллера UserController следующим кодом:

App/Http/Controllers/UserController.phppublic function index()
{
    $users = DB::select('select * from users');
    foreach($users as $user)
    {
        echo "Name: $user->name";
        echo "<br/>Email:$user->email";
    }
}

Маршрут для вызова метода index()название_домена.ru/users.

Конкретная запись, метод show()

Измените метод show() контроллера UserController следующим кодом:

App/Http/Controllers/UserController.phppublic function show($id)
{
$user = DB::select('select * from users where id='.$id);
echo "The name of the user is ". $user[0]->name."<br/>";
}

Маршрут для вызова метода show()название_домена.ru/users/1.

Обновление записи, метод edit()

Измените метод edit() контроллера UserController следующим кодом:

App/Http/Controllers/UserController.phppublic function edit($id)
{
    $user = DB::select('select * from users where id='.$id);
    echo "The current email of the user is ". $user[0]->email."<br/>";
    $email = 'yesmin@gmail.com';
    $user = DB::select("Update users set email='$email'where id=".$id);
    $user = DB::select('select * from users where id='.$id);
    echo "The email of the user after update is ". $user[0]->email;
}

Маршрут для вызова метода show()название_домена.ru/users/1/edit.

Удаление записи, метод destroy()

Метод destroy() предназначен для удаления любой записи из таблицы. А вот маршрут удаления записи проходит от другого метода. Здесь я использовал метод show() для создания гиперссылки для удаления записи, которая добавляется в конце метода.

Измените метод destroy() контроллера UserController следующим кодом:

App/Http/Controllers/UserController.phppublic function show($id)
{
    $user = DB::select('select * from users where id='.$id);
    echo "The name of the user is ". $user[0]->name."<br/>";
    echo "<a href='".url('/')."/users/delete/".$id."'>Delete</a>";
}

Маршрут для вызова метода show()название_домена.ru/users/1.

Измените метод destroy() контроллера UserController следующим кодом, чтобы удалить определенную запись:

App/Http/Controllers/UserController.phppublic function destroy($id)
{
    $user = DB::select('Delete from users where id='.$id);
    echo "The record is deleted";
}

Добавьте маршрут в файл web.php для вызова метода destroy():

routes/web.phpRoute::get('/users/delete/{id}' , [UserController::class, 'destroy']);
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг