概要
リクエストデータを取得・検証する基本メソッドを紹介します。
【ファイル先】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');