Метод enum
Метод enum применяется к объекту запроса и возвращает значение поля в виде экземпляра перечисления PHP. Первым параметром передаётся имя поля, вторым - класс перечисления. Если поле не существует или его значение не соответствует ни одному из случаев перечисления, метод возвращает null.
Синтаксис
<?php
$request->enum($field, $enumClass);
?>
Пример
Давайте получим значение поля 'status' в виде перечисления:
<?php
use AppEnumsStatusEnum;
use IlluminateHttpRequest;
public function index(Request $request)
{
$status = $request->enum('status', StatusEnum::class);
if ($status === null) {
echo "Status not found or invalid";
} else {
echo "Status: " . $status->value;
}
}
?>
Результат выполнения кода:
"Status: published"
Пример
Давайте используем метод enum в контроллере для фильтрации записей:
<?php
namespace AppHttpControllers;
use AppEnumsStatusEnum;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
$status = $request->enum('status', StatusEnum::class);
if ($status !== null) {
$articles = Article::where('status', $status->value)->get();
foreach ($articles as $article) {
echo $article->title . "\n";
}
} else {
echo "Invalid status parameter";
}
}
}
?>
Результат выполнения кода:
"article 1"
"article 2"
"article 3"
Пример
Давайте проверим несколько полей с разными перечислениями:
<?php
namespace AppHttpControllers;
use AppEnumsRoleEnum;
use AppEnumsStatusEnum;
use IlluminateHttpRequest;
class UserController extends Controller
{
public function update(Request $request)
{
$role = $request->enum('role', RoleEnum::class);
$status = $request->enum('status', StatusEnum::class);
if ($role === null) {
echo "Invalid role parameter";
return;
}
if ($status === null) {
echo "Invalid status parameter";
return;
}
echo "User role: " . $role->name . "\n";
echo "User status: " . $status->value;
}
}
?>
Результат выполнения кода:
"User role: admin"
"User status: active"