リクエストクラスのquery()メソッドと同様の結果にしたい
use Illuminate\Http\Request;
$request->query()
array:1 [▼
"email" => "desc"
]
直前のリクエストURLからクエリパラメータを抽出
parse_url(url()->previous())
laravelヘルパのurl()から直前リクエストのurlを取得後にphpのparse_url関数で以下の形で取得できる
array:1 [▼
"scheme" => "http"
"host" => "http://localhost"
"path" => "/sort/index"
"query" => "email=desc"
]
ここから必要なqueryの値を取得して無理やり「=」で区切り、配列にする
その配列の最初をkeyにして最後をvalueにすることで、query()メソッドと同様にした
qiita.rb
$query = explode('=', Arr::get(parse_url(url()->previous()), 'query'));
$queryParam[Arr::first($query)] = Arr::last($query);
注意点
これはクエリパラメータがemail=descのように一つで来る前提なので、email=desc&name=hogeのように2つ以上きた場合は"query" => "email=desc&name=hoge"
の形になるので、対応できない
他に良い方法ないかな〜
2022/03/09 追記
parse_str(Arr::get(parse_url(url()->previous()), 'query'), $queryParam);
$queryParam
には上記の$queryParam
と同様の結果が格納される
こちらであれば注意点は解消され、複数クエリパラメータで来ても問題ない