我正在编写一个旅游机构网站。我在数据库中hotels
有一个名为stars
的列,它是一个整数,其值介于1到5之间。
我有一个表单,用户可以根据他们的stars
搜索酒店。该字段为checkbox
,因此他可以一起搜索five stars
和four stars
个酒店。
我阅读stars array
并使用以下代码将访问者重定向到搜索页面:
$stars_param = "";
$i = 1;
foreach($stars as $star){
if($i == 1){
$stars_param .= $star;
}else{
$stars_param .= "&".$star;
}
$i++;
}
$parameters = "filter=true&&stars=".$stars_param."&&price=".$price."&&area=".$area;
return \Redirect::to('/hotels-search/?'.$parameters);
所以网址会是这样的:
hotels-search?filter=true&&stars=5&1&&price=300&&area=taksim
在hotels-search
页面中,我阅读了$_GET
,并展开了星号变量并对此查询进行了编码以获取数据:
$stars = $_GET['stars'];
$stars_array = explode('&', $stars);
$price = $_GET['price'];
$area = $_GET['area'];
$this['hotels'] = \Lilessam\Hotels\Models\Hotel::orderBy('id', 'desc')->where(function($query) use($stars_array){
$i = 1;
foreach($stars_array as $star){
if($i == 1){
$query->where('stars', $star);
}else{
$query->orWhere('stars', $star);
}
$i++;
}
})->where('price', '<=', $price)->whereHas('area', function($query) use($area){
$query->where('name', 'LIKE', $area);
})->paginate(5);
但是,如果我搜索5星和1星的酒店,我只会得到五星级酒店!
如果我搜索四星级和三星级酒店,我只能获得四星级酒店!其他时候我从数据库中得不到任何东西!!
如何进行查询,以便同时获得1星或3星或5星的酒店?!
答案 0 :(得分:1)
为什么不使用此
<properties>
<spark.version>1.6.2</spark.version>
<kafka.version>0.8.2.1</kafka.version>
</properties>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>${kafka.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
答案 1 :(得分:0)
获取变量由单个&
分隔,而不是&&
。每个名称值对都有以下形式: - name = value。
试试这个。
$stars_param = implode(",",$stars);
$parameters = "filter=true&stars=".$stars_param."&price=".$price."&area=".$area;
return \Redirect::to('/hotels-search/?'.$parameters);
然后您的网址将是:
hotels-search?filter=true&stars=5,1&price=300&area=taksim
在酒店搜索页面
$stars = $_GET['stars'];
$stars_array = explode(',', $stars);
$price = $_GET['price'];
$area = $_GET['area'];
希望这会对你有帮助......