gpt4 book ai didi

php - 使用几个选项过滤 php mysql

转载 作者:可可西里 更新时间:2023-11-01 08:24:36 26 4
gpt4 key购买 nike

我有一个假期旅游数据库,想同时按 3 个参数(目的地国家/地区、出发日期、酒店)对其进行排序。

所以我以 html 形式创建了三个输入(目的地、日期、酒店)

<form action="/search-tours" method="GET">
<input name="destination" type="text">
<input name="date" type="date">
<input name="hotel" type="text">
<button type=submit>Search tours</button>

我使用的是 Laravel,所以我的 PHP 代码在 Controller 中(“Tour”是模型 = 连接到数据库中的表“tours”)。

        $destination = $request->get('destination');
$date = $request->get('date');
$hotel = $request->get('hotel');


$tours = Tour::where('destination', '=', $destination)
->where('departure', '=' , $date)
->where('hotel', '=', $hotel)
->get();

当我提交所有输入时,它会给出正确的结果,但是当缺少任何输入时,它根本不起作用。

我以为我可以通过 If-else 解决它,但后来我意识到可以有 7 种情况(1- 参数存在,0 - 缺失:对于前目的地(1)-日期(0)-酒店(0)= 100,总计:111、100、010、001、110、011、101——我们不关心 000)。如果我们有 4 个输入,它将是 15、5 个参数 - 31 等等。

所以写这么多if-else会很乏味,那就意味着还有另一种方法。

如果只给出 1 或 2 个输入,我应该采取什么方法让它工作?

最佳答案

$query = (new Tour)->newQuery();
if($request->has('destination')){
$query->where('destination', '=', $request->get('destination'));
}
if($request->has('date')){
$query->where('departure', '=', $request->get('date'));
}
if($request->has('hotel')){
$query->where('hotel', '=', $request->get('hotel'));
}
$tours = $query->get();

关于php - 使用几个选项过滤 php mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com