はじめに
URLの末尾に?page=2
や'?q=Laravel&sort=asc' のようなものを見かけることは多いです。
これは「クエリ文字列(query string)」と呼ばれ、Webアプリに情報を渡すための仕組みです。
今回は、クエリ文字列の基本的な仕組みや、PHP・Laravelでの扱い方についてまとめます。
①クエリ文字列とは?
クエリ文字列とは、URLの末尾に?
をつけて、キー=値
の形式で情報を渡す仕組みです。
例:
-
q=Laravel
→検索キーワードが"Laravel" -
page=2
→ 2ページ目の表示
特徴:
- 複数の値は
&
でつなぐ - すべて文字列として扱われる
- ブラウザのアドレスバーに表示されるため、再読み込み・共有がしやすい
②クエリ文字列の構造
部分 | 意味 |
---|---|
? |
クエリ文字列の始まり |
& |
複数のパラメータを区切る |
= |
キーと値をつなぐ |
クエリ文字列の用途例
- 検索フォーム:
/search?q=Laravel
- ページネーション:
/posts?page=3
- 並び替え:
/products?sort=price_asc
- フィルタ:
/items?category=books&price=under_1000
PHPでの取得方法
$keyword = $_GET['q']; // Laravel
$page = $_GET['page']; // 2
- $_GETはPHPのスーパーグローバル変数
- クエリ文字列をキーとして取得できる
③Laravelでの取得方法
Laravelでは、Requestクラスを使って取得します。
use Illuminate\Http\Request;
public function search(Request $request)
{
$keyword = $request->query('q'); // "Laravel"
$page = $request->query('page'); // "2"
}
もしくは:
$request->input('q'); //クエリ・POST どちらも対象
④Bladeテンプレートでの活用例
ページネーション時に現在のクエリを維持:
{{ $posts->appends(request()->query())->links()}}
→検索ワードなどを保持したままページネーション可能
⑤クエリ文字列を生成するには?
$url = route('search',['q' => 'Laravel', 'page' => 2]);
Laravelのroute()やurl()ヘルパーでクエリを付与可能です。
⑥まとめ
クエリ文字列は、ユーザーとアプリをつなぐ情報の橋渡しのような存在です。
LaravelやPHPでの取得・保持・生成の方法を知っておくことで、より動的で便利なWebアプリが作れるようになります!