リクエスト

記事の内容

概要

リクエストデータを取得・検証する基本メソッドを紹介します。

【ファイル先】app/Http/Controllers/UserController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    public function index(Request $request)
    {
        // クエリパラメータでフィルタリング
        $search = $request->input('search');

        // クエリビルダーを使用して検索条件を適用
        $users = User::when($search, function($query, $search) {
            return $query->where('name', 'like', "%{$search}%");
        })->paginate(10); // ページネーション

        // ビューにデータを渡して表示
        return view('users.index', compact('users'));
    }
}

データ取得系

input

指定したキーの値を取得しキーが存在しない場合、デフォルト値を返します。

$name = $request->input('name', 'default name');

all

すべての入力データを配列で取得します。

$data = $request->all();

only

指定したキーのみを取得します。

$data = $request->only(['name', 'email']);

except

指定したキーを除外してデータを取得します。

$data = $request->except(['password']);

json

リクエストのJSONデータを取得します。

$data = $request->json('user.name');

存在確認・検査系

has

特定のキーが存在するかを確認します。

if ($request->has('email')) {
    // emailが存在する場合の処理
}

filled

キーが存在し、かつ値が空でないかを確認します。

if ($request->filled('name')) {
    // nameが空でない場合の処理
}

missing

キーが存在しないかを確認します。

if ($request->missing('age')) {
    // ageが存在しない場合の処理
}

hasAny

指定したキーのうち、少なくとも1つが存在するかを確認します。

if ($request->hasAny(['name', 'email'])) {
    // nameまたはemailが存在する場合の処理
}

真偽値・型変換系

boolean

値を真偽値に変換して取得します。

$isActive = $request->boolean('active');

integer

値を整数型に変換して取得します。

$age = $request->integer('age');

float

値を浮動小数点数に変換して取得します。

$price = $request->float('price');

ファイル系

file

アップロードされたファイルを取得します。

$file = $request->file('avatar');

hasFile

ファイルが存在するかを確認します。

if ($request->hasFile('avatar')) {
    // ファイルが存在する場合の処理
}

isValid

アップロードされたファイルが正しいかを確認します。

if ($file->isValid()) {
    // ファイルが正しい場合の処理
}

ヘッダー・URL・IP関連

header

リクエストヘッダーを取得します。

$userAgent = $request->header('User-Agent');

url

リクエストのURLを取得します。

$url = $request->url();

fullUrl

クエリパラメータを含む完全なURLを取得します。

$fullUrl = $request->fullUrl();

fullUrlWithQuery

既存のクエリパラメータに追加でクエリを含むURLを取得します。

$urlWithQuery = $request->fullUrlWithQuery(['sort' => 'desc']);

ip

クライアントのIPアドレスを取得します。

$clientIp = $request->ip();

segment

URLの指定されたセグメントを取得します。

// https://example.com/admin/users/5/edit
// セグメント 1: admin
// セグメント 2: users
// セグメント 3: 5
// セグメント 4: edit

$segment = $request->segment(2)
// $segmentの中身: "users"

segments

URLのすべてのセグメントを配列で取得します。

// https://example.com/admin/users/5/edit
// セグメント 1: admin
// セグメント 2: users
// セグメント 3: 5
// セグメント 4: edit

$segments = $request->segments();
// $segmentsの中身: ['admin', 'users', '5', 'edit']

ルート関連

route

ルートパラメータを取得します。

// ルート: /users/{id}
// URL: /users/42

$userId = $request->route('id');
// $userIdの中身: 42

is

現在のルートが指定したパターンに一致するかを確認します。

if ($request->is('admin/*')) {
    // admin以下のルートに一致する場合の処理
}

method

リクエストメソッド(GET, POSTなど)を取得します。

$method = $request->method();

if ($method === 'POST') {
    // POSTリクエストの場合の処理
}

isMethod

指定したHTTPメソッドかどうかを確認します。

if ($request->isMethod('post')) {
    // POSTリクエストの場合の処理
}

セッション関連

session

セッションデータを取得します。

$value = $request->session()->get('key', 'default');

put

セッションデータを設定します。

$request->session()->put('key', 'value');

put

セッションデータを設定します。

$request->session()->put('key', 'value');

リクエストタイプ確認

ajax

リクエストがAJAXかどうかを確認します。

if ($request->ajax()) {
    // AJAXリクエストの場合の処理
}

wantsJson

レスポンスとしてJSONを要求しているか確認します。

if ($request->wantsJson()) {
    // JSONレスポンスを要求している場合の処理
}

expectsJson

レスポンスがJSONであることを期待しているか確認します。

if ($request->expectsJson()) {
    // JSONレスポンスを期待している場合の処理
}

データ操作系

merge

既存のリクエストデータに新しいデータを追加します。

$request->merge(['role' => 'admin']);

// 追加後のデータを取得
$data = $request->all();

// $dataの中身: フォームから送信されたデータ + 'role' => 'admin' が含まれる

replace

リクエストデータ全体を置き換えます。

$request->replace([
    'name' => 'John Doe',
    'email' => 'johndoe@example.com',
    'status' => 'active'
]);

// 置き換え後のデータを取得
$data = $request->all();

// $dataの中身: ['name' => 'John Doe', 'email' => 'johndoe@example.com', 'status' => 'active']

クッキー系

cookie

リクエストに含まれているクッキーを取得します。

$cookie = $request->cookie('session_id');
記事の内容
閉じる