価格(最低から最高、最高から最低)に従ってDBレコード(ツアー)をソートしようとしています。そして、dbに12個のダミーレコードを追加しました(100〜1200)。以下は、ソートクエリを実行するためのコントローラで私のコードです:ソートすることにより、最低、最高のを選択した場合は価格に基づいてレコードを並べ替えることができません。
public function short(Request $request)
{
if ($request->sortby == "lower") {
$query = Tour::query()->orderBy('price', 'asc');
if (!empty($request->country)) {
$query = $query->whereHas('country', function($r) use($request) {
$r->where('countries.name', $request->country);
});
}
if (!empty($request->category)) {
$query = $query->whereHas('category', function($s) use($request) {
$s->where('categories.name', $request->category);
});
}
if ($request->days !== null) {
$days = $request->days;
$days_explode = explode('|', $days);
$query = $query->whereBetween('days', [$days_explode[0], $days_explode[1]]);
}
$query = $query->get();
}
else{
$query = Tour::query()->orderBy('price', 'desc');
if (!empty($request->country)) {
$query = $query->whereHas('country', function($r) use($request) {
$r->where('countries.name', $request->country);
});
}
if (!empty($request->category)) {
$query = $query->whereHas('category', function($s) use($request) {
$s->where('categories.name', $request->category);
});
}
if ($request->days !== null) {
$days = $request->days;
$days_explode = explode('|', $days);
$query = $query->whereBetween('days', [$days_explode[0], $days_explode[1]]);
}
$query = $query->get();
}
return view('public.tour.search')->withResults($query);
}
、レコードがdbテーブルの価格価格の列に応じて、以下の順序で表示されます。
100,1000,1100,1200,200,300,400,500,600,700,800,900
と最高最低に選択されたレコードは、DBテーブルの価格の価格列に応じて、以下の順序で表示されている場合:
900,800,700,600,500,400,300,200,1200,1100,1000,100
誰も助けてくれますか?
Laravelが数字を文字列として並べ替えるかのように見えます。数字があなたのDBの 'INT'カラム(または他の数値タイプ)に保存されていると確信していますか? –