0
実行しようとしているクエリの解決策を探しています。 私は場所と呼ばれるデータベーステーブルを持っており、返された結果を変更/フィルタするフォームを送信できるようにする必要があります。Laravelユーザーのフォームからデータベース結果を取得する
ユーザーが選択できる2つのフィールドは、慈善団体&距離 です。フィールドは必須ではないため、設定されているかどうかを確認する必要があります。
私は現在、それは距離で作業しているが、両方を用いて充填されている場合、それは仕事を得ることができず、WHERE
私は慈善ラインを取る場合は、ここで私のコントローラ機能は
public function search(Request $request)
{
$circle_radius = 3959;
$max_distance = $request->Input(['distance']);
$charity = $request->Input(['charities']);
$lat = '53.5526';
$lng = '-1.479726';
$locations = DB::select(
'SELECT * FROM
(SELECT *, (' . $circle_radius . ' * acos(cos(radians(' . $lat . ')) * cos(radians(latitude)) *
cos(radians(longitude) - radians(' . $lng . ')) +
sin(radians(' . $lat . ')) * sin(radians(latitude))))
AS distance
FROM locations) AS distances
WHERE distance < ' . $max_distance . '
AND charity = ' . $charity . '
ORDER BY distance;
');
return view('map.search', compact('locations'));
}
ですちょうど距離で動作しますが、私は両方が必要です
距離だけでなくチャリティでも動作しますか?クエリを記録し、手動で実行しますか?多分$慈善団体は正確な一致する価値を持っていません。また、あなたのやり方は非常に危険で、SQLインジェクションのリスクにさらされています –
Laravelクエリービルダーを使用してこれを単純化/デバッグすることを検討しましたか?私はこの質問を破って、それがSQLの問題かPHPの変数の問題かどうかを判断することをお勧めします。 –
$ request-> Input(['whatever'])ではなく、$ request-> input( 'whatever')でなければなりませんか? –