Когда вы создаете модель в 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)
Не писать ответ