[英]How to join multiple column into one? Laravel
这是我的控制器:
public function search(request $request)
{
$request->flash();
$search = $request->get('q');
$vehicles = vehicle::where('make', 'LIKE', '%'.$search. '%')
->orWhere ( 'model', 'LIKE', '%' . $search . '%' )
->orWhere ( 'year', 'LIKE', '%' . $search . '%' )
->paginate(9);
return view('user.vehicles.vehicles',compact('vehicles'));
}
路线:
Route::get('/vehicles/search', 'VehiclesController@search');
拉拉维尔之刃
<form action="/vehicles/search" method="get">
<div class="row">
<div class="col-md-12 my-1">
<div class="input-group">
<input type="text" class="form-control" name="q" value="{{ old('q')}}" autocomplete="off" placeholder="Search for brand, model, year, etc">
<span class="input-group-btn">
<button class="btn btn-success" type="submit"><span class="fa fa-search"></span></button>
</span>
</div>
</div>
</div>
<form>
问题 :
当我搜索ex: Toyota
,由于
where('make', 'LIKE', '%'.$search. '%')
但是,当我搜索Toyota Innova 2013
,没有结果。
我想要的是:当我搜索Toyota Innova 2013
,代码应显示来自make
, model
和year
所有结果
尝试这个:
$vehicles = vehicle::where(function($query) use ($search) {
$parts = explode(' ', $search);
foreach ($parts as $part) {
$query = $query->where('make', 'LIKE', '%'.$part. '%')
->orWhere ( 'model', 'LIKE', '%' . $part. '%' )
->orWhere ( 'year', 'LIKE', '%' . $part. '%' )
}
})
我尚未对此进行测试,但是应该将搜索查询中的每个单词与每个列进行比较
您必须以一种形式根据列制作三个搜索按钮。
您正在使用$search
从控制器传递三个参数。
在您的模型中尝试以下操作:
第一栏
if ($request->make != null && $request->make != '') {
$data->where('vehicle.make', $request->make);
}
第二栏
if (isset($request->model) && $request->model != '') {
$data = $data->where('vehicle.model', $request->model);
}
第三栏
if (isset($request->year) && $request->year != '') {
$data = $data->where('vehicle.year', $request->year);
}
我使用db :: raw和concat
laravel文档
use DB;
public function search(request $request)
{
$request->flash();
$search = $request->get('q');
$vehicles = vehicle::where(\DB::raw("CONCAT_WS(' ', make, model, year)"), 'LIKE', '%' . $search . '%')
->paginate(9);
return view('user.vehicles.vehicles',compact('vehicles','vehicless'));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.