我有搜索表单来通过特定条件列出属性/广告。在我的表单中,我试图从数据库中搜索并列出与输入的 min_price 和 max_price 相对应的属性。当我提交表单时,我在表中没有得到任何结果,当我死掉并转储 min_price 或 max_price 变量时,我得到 false。任何帮助表示赞赏。这是我的代码
分类 Controller .php
<?php
namespace App\Http\Controllers;
use App\Category;
use App\Property;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
class CategoryController extends Controller
{
public function index()
{
return view('categories.search', compact('data'));
}
public function search($price, Request $request, Property $property)
{
$category = $property->category;
$query = Property::query();
// Code for min and max price
$min_price = $request->has('min_price');
$max_price = $request->has('max_price');
//dd($max_price);
if (($min_price) && ($max_price)) {
$query->whereBetween('price', [$min_price, $max_price]);
}
elseif (! is_null($min_price)) {
$query->where('price', '>=', $min_price);
}
elseif (! is_null($max_price)) {
$query->where('price', '<=', $max_price);
}
$results = $query->get();
return view('categories.search', compact('category', 'results'));
}
}
搜索.blade.php
@if(isset($results))
<table class="table">
<thead>
<th>Price</th>
</thead>
<tbody>
@foreach ($results as $result)
<tr>
<td>{{ $result->price }}</td>
</tr>
@endforeach
</tbody>
</table>
@endif
<form id="searchForm" method="GET" action="/search">
<div class="col-md-6 mb-6">
<label>Price</label>
<input type="number" id="min_price" name="min_price" class="form-control" placeholder="Min Price">
<input type="number" id="max_price" name="max_price" class="form-control" placeholder="Max Price">
</div>
<button class="btn btn-primary btn-lg btn-block">Search</button>
</form>
最佳答案
主要问题是因为您在 $request 中没有数据,但是在您的变量 $price 中您有这样的内容:"min_price=1000 -max_price=2000"。
因此您需要从该字符串中获取值:
public function search($price, Request $request, Property $property)
{
$category = $property->category;
$array = explode('-', $price); // Array of your values
foreach($array as $a){
$s = [];
$s = explode('=', $a);
if ($s[0] === 'min_price'){
$s[1] ? $min_price = intval($s[1]) : $min_price = null;
} else {
$s[1] ? $max_price = intval($s[1]) : $max_price = null;
}
}
if (!empty($min_price) && !empty($max_price)) {
$results = Property::whereBetween('price', [$min_price, $max_price])->get();
return view('categories.search', compact('category', 'results'));
}
elseif (!empty($min_price)) {
$results = Property::where('price', '>=', $min_price)->get();
}
elseif (!empty($max_price)) {
$results = Property::where('price', '<=', $max_price)->get();
}
return view('categories.search', compact('category', 'results'));
}
也许您需要尝试以更好的格式发送 min_price 和 max_price,但这应该可行。
祝你好运。
关于php - 在 Laravel 的搜索表单中定义过滤器最小到最大价格的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56868107/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>
我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c