0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Web開発の基本「クエリ文字列」とは?仕組み・使い方・Laravelでの取得方法

Posted at

はじめに

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()ヘルパーでクエリを付与可能です。

⑥まとめ

IMG_7773.jpeg

クエリ文字列は、ユーザーとアプリをつなぐ情報の橋渡しのような存在です。
LaravelやPHPでの取得・保持・生成の方法を知っておくことで、より動的で便利なWebアプリが作れるようになります!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?