如何使用 Laravel 按类别和区域进行搜索
How to do a Search By Category and Area using Laravel
我希望能够按用户所属的类别以及他们所在的区域搜索用户。
我有 4 个 table,其中包括
A User table with id, name, surname, email, phone, type, photo and area_id.
A category table with id, name, description
A Service table with id, name, description, and category_id.
and I have a Pivot table between Service and User named service_user with attributes id, name, price, description, user_id, and service_id.
我想知道如何按类别和区域搜索用户,前提是使用 Laravel 的数据库中存在所有信息。我已经设法单独按区域进行搜索并且有效。刚刚剩下的类别,我不知道为什么它不起作用或具体要做什么,因为在我的数据库中,类别 ID 迁移到服务 table,service_id 也迁移到枢轴 table(service_user) 和 user_id。所以这是多对多的关系 btw 用户和服务。
在我的网络文件中,我有这个
Route::get('/search', 'UserController@search')->name('search');
在我的用户控制器中,我做了这样的事情
public function search(Request $request) {
$category = $request->get('category');
$area = Input::get('area');
//dd($category);
//dd($area);
// $p = $town->id;
// $v = Input::get('town.$town->id');
//$va = $request->getPathInfo();
if(!(empty($category)) && !(empty($area))) {
$results = User::with(['area', 'services', 'category'])
->where('services.category.category_id', 'like', "%$category%")
->where('area_id', 'like', "%$area%")
->get();
//Section::inject('title','Search');
// dd($results);
return view('Search.search', compact('results'));
}
elseif (!(empty($category)) && empty($area)) {
$results = User::with(['area', 'services'])
->where('services.category.category_id', 'like', "%$category%")
->get();
//dd($results);
return view('Search.search', compact('results'));
}
elseif(empty($category) && !empty($area)) {
$results = User::with(['area', 'services'])
->where('area_id', 'like', "%$area%")
->get();
//dd($results);
return view('Search.search', compact('results'));
}
return view('Users/jobberlist');
}
在我带有搜索表单的主页中,我这样做了
<form action= "{{ route('search') }}" method="GET">
<div class="row">
<div class="col-lg-7 col-md-5 col-sm-5 col-xs-12">
<div class="job-field">
<select name="category">
<option value="">Je recherche une personne pour...</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-lg-4 col-md-5 col-sm-5 col-xs-12">
<div class="job-field">
<select data-placeholder="City, province or region" class="chosen-city" name="area">
<option value="">Choissisez un quartier...</option>
@foreach ($areas as $area)
<option value="{{ $area->id }}">{{ $area->name }}</option>
@endforeach
</select>
<i class="la la-map-marker"></i>
</div>
</div>
<div class="col-lg-1 col-md-2 col-sm-2 col-xs-12">
<button type="submit"><i class="la la-search"></i></button>
</div>
</div>
</form>
有人可以帮我解决这个问题吗?我很乐意欣赏。
类似的内容可能适合您
User::with(['area', 'services'])
->where('type', 'jobbers')
->where('area_id', $area_id)
->whereHas('services', function ($query) use ($category_id) {
$query->where('category_id', $category_id);
})
->get();
我希望能够按用户所属的类别以及他们所在的区域搜索用户。
我有 4 个 table,其中包括
A User table with id, name, surname, email, phone, type, photo and area_id.
A category table with id, name, description
A Service table with id, name, description, and category_id.
and I have a Pivot table between Service and User named service_user with attributes id, name, price, description, user_id, and service_id.
我想知道如何按类别和区域搜索用户,前提是使用 Laravel 的数据库中存在所有信息。我已经设法单独按区域进行搜索并且有效。刚刚剩下的类别,我不知道为什么它不起作用或具体要做什么,因为在我的数据库中,类别 ID 迁移到服务 table,service_id 也迁移到枢轴 table(service_user) 和 user_id。所以这是多对多的关系 btw 用户和服务。
在我的网络文件中,我有这个
Route::get('/search', 'UserController@search')->name('search');
在我的用户控制器中,我做了这样的事情
public function search(Request $request) {
$category = $request->get('category');
$area = Input::get('area');
//dd($category);
//dd($area);
// $p = $town->id;
// $v = Input::get('town.$town->id');
//$va = $request->getPathInfo();
if(!(empty($category)) && !(empty($area))) {
$results = User::with(['area', 'services', 'category'])
->where('services.category.category_id', 'like', "%$category%")
->where('area_id', 'like', "%$area%")
->get();
//Section::inject('title','Search');
// dd($results);
return view('Search.search', compact('results'));
}
elseif (!(empty($category)) && empty($area)) {
$results = User::with(['area', 'services'])
->where('services.category.category_id', 'like', "%$category%")
->get();
//dd($results);
return view('Search.search', compact('results'));
}
elseif(empty($category) && !empty($area)) {
$results = User::with(['area', 'services'])
->where('area_id', 'like', "%$area%")
->get();
//dd($results);
return view('Search.search', compact('results'));
}
return view('Users/jobberlist');
}
在我带有搜索表单的主页中,我这样做了
<form action= "{{ route('search') }}" method="GET">
<div class="row">
<div class="col-lg-7 col-md-5 col-sm-5 col-xs-12">
<div class="job-field">
<select name="category">
<option value="">Je recherche une personne pour...</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-lg-4 col-md-5 col-sm-5 col-xs-12">
<div class="job-field">
<select data-placeholder="City, province or region" class="chosen-city" name="area">
<option value="">Choissisez un quartier...</option>
@foreach ($areas as $area)
<option value="{{ $area->id }}">{{ $area->name }}</option>
@endforeach
</select>
<i class="la la-map-marker"></i>
</div>
</div>
<div class="col-lg-1 col-md-2 col-sm-2 col-xs-12">
<button type="submit"><i class="la la-search"></i></button>
</div>
</div>
</form>
有人可以帮我解决这个问题吗?我很乐意欣赏。
类似的内容可能适合您
User::with(['area', 'services'])
->where('type', 'jobbers')
->where('area_id', $area_id)
->whereHas('services', function ($query) use ($category_id) {
$query->where('category_id', $category_id);
})
->get();