Когда вы создаете модель в Laravel, необходимо определить методы, которые будут использоваться для работы с данными. Эти методы позволят вам выполнять различные операции с записями в таблице, связанной с моделью.
Вот несколько примеров методов, которые могут быть определены в модели:
-
create(array $attributes)
: создает новую запись в таблице, используя переданные атрибуты. Например,$user = User::create(['name' => 'John', 'email' => 'john@example.com', 'password' => 'secret']);
-
update(array $attributes)
: обновляет запись в таблице, используя переданные атрибуты. Например,$user->update(['name' => 'Jane']);
-
delete()
: удаляет запись из таблицы. Например,$user->delete();
-
find($id)
: находит запись в таблице по ее идентификатору. Например,$user = User::find(1);
-
where($column, $operator, $value)
: находит записи в таблице, удовлетворяющие определенному условию. Например,$users = User::where('name', 'John')->get();
Это только несколько примеров методов, которые можно определить в модели. Вы можете определить свои собственные методы для выполнения специфических операций с данными в таблице. Кроме того, Laravel предоставляет множество других методов для работы с данными, которые могут быть использованы в модели.
Пример CRUD контроллера
CRUD контроллер для модели Users в Laravel:
namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { /** * Отобразить список пользователей * * @return \Illuminate\Http\Response */ public function index() { $users = User::all(); return view('users.index', compact('users')); } /** * Показать форму для создания нового пользователя * * @return \Illuminate\Http\Response */ public function create() { return view('users.create'); } /** * Сохранить нового пользователя в базу данных * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->password = bcrypt($request->password); $user->save(); return redirect()->route('users.index') ->with('success', 'Пользователь успешно создан.'); } /** * Отобразить информацию о пользователе * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $user = User::findOrFail($id); return view('users.show', compact('user')); } /** * Показать форму для редактирования пользователя * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $user = User::findOrFail($id); return view('users.edit', compact('user')); } /** * Обновить информацию о пользователе в базе данных * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $user = User::findOrFail($id); $user->name = $request->name; $user->email = $request->email; if ($request->password != '') { $user->password = bcrypt($request->password); } $user->save(); return redirect()->route('users.index') ->with('success', 'Пользователь успешно обновлен.'); } /** * Удалить пользователя из базы данных * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $user = User::findOrFail($id); $user->delete(); return redirect()->route('users.index') ->with('success', 'Пользователь успешно удален.'); } }
Этот контроллер обрабатывает запросы для отображения, создания, редактирования и удаления пользователей в приложении Laravel. Вам, вероятно, понадобится создать соответствующие представления (views) для каждого из методов контроллера, чтобы пользователь мог взаимодействовать с вашим приложением.
Представления (views)
Представления (views) в Laravel используются для отображения данных на экране пользователю. Они содержат HTML код, который определяет структуру и содержание веб-страницы, а также специальные директивы для вставки динамических данных.
В Laravel, представления хранятся в директории
resources/views
, а файлы представлений имеют расширение
.blade.php
. Это связано с тем, что в Laravel используется шаблонизатор Blade, который позволяет вставлять
PHP код в HTML, используя синтаксис фигурных скобок
{{ }}
и
@php
.
Каждый метод контроллера обычно возвращает представление, которое будет отображаться
пользователю. Например, метод
index
в контроллере Users, который мы рассмотрели в предыдущем ответе, возвращает представление
users.index
с помощью функции
view()
. Это означает, что Laravel будет искать файл
index.blade.php
в директории
resources/views/users
.
Вот пример простого представления, которое выводит список пользователей:
<!-- resources/views/users/index.blade.php --> @extends('layouts.app') @section('content') <h1>Пользователи</h1> <table> <thead> <tr> <th>Имя</th> <th>Email</th> <th>Действия</th> </tr> </thead> <tbody> @foreach ($users as $user) <tr> <td>{{ $user->name }}</td> <td>{{ $user->email }}</td> <td> <a href="{{ route('users.show', $user->id) }}">Просмотреть</a> <a href="{{ route('users.edit', $user->id) }}">Редактировать</a> <form action="{{ route('users.destroy', $user->id) }}" method="POST"> @csrf @method('DELETE') <button type="submit">Удалить</button> </form> </td> </tr> @endforeach </tbody> </table> @endsection
В этом примере мы используем директиву
@extends
для указания того, что это представление наследует шаблон
layouts.app
. Затем мы используем директиву
@section
для определения блока контента, который будет вставлен в шаблон.
Внутри блока контента мы используем цикл
@foreach
для перебора всех пользователей и вывода их имени и email в таблицу. Мы также используем
директивы
@csrf
и
@method
для защиты от подделки межсайтовых запросов (CSRF) и указания метода HTTP (DELETE), который
будет использоваться при удалении пользователя.
Наконец, мы используем функции route()
и {{ }}
для генерации ссылок на другие страницы приложения и вставки динамических данных (например, имя пользователя) в HTML код.
Кроме того, в Laravel есть возможность использовать компоненты для повторяющихся элементов интерфейса, например, навигационное меню или форму для создания новых пользователей. Компоненты можно определять в отдельных файлах и использовать их в представлениях с помощью директивы @component
.
Например, вот пример компонента для отображения навигационного меню:
<!-- resources/views/components/navbar.blade.php --> <nav> <ul> <li><a href="/">Главная</a></li> <li><a href="{{ route('users.index') }}">Пользователи</a></li> <li><a href="{{ route('logout') }}">Выйти</a></li> </ul> </nav>
Мы можем использовать этот компонент в других представлениях с помощью директивы @component
:
<!-- resources/views/users/index.blade.php --> @extends('layouts.app') @section('content') @component('components.navbar') @endcomponent <h1>Пользователи</h1> <!-- ... --> @endsection
Таким образом, использование представлений и компонентов в Laravel позволяет упростить создание интерфейса и повторно использовать код, что может существенно ускорить разработку веб-приложений.
Статьи по теме Как создать модель Laravel
- Как создать модель в Laravel
- Установка Laravel и создание нового проекта
- Создание таблицы в базе данных (миграции) для модели в Laravel
- Создание класса модели в Laravel
- Стандартные свойства модели в Laravel
- Базовые методы CRUD контроллера для модели в Laravel
Комментарии (0)
Не писать ответ