pwn*_*z22 5 php mysql laravel-5 laravel-scout
我正在为 Laravel Scout使用laravel-scout-tntsearch-driver包。我已经实施了,一切正常。但现在我想做一个关系搜索。我的城市有很多公司。
城市.php
public function companies()
{
return $this->hasMany(Company::class);
}
Run Code Online (Sandbox Code Playgroud)
公司.php
public function city()
{
return $this->belongsTo(City::class);
}
public function toSearchableArray()
{
return [
'id' => $this->id,
'title' => $this->title
];
}
Run Code Online (Sandbox Code Playgroud)
现在搜索只适用于所有公司。
Company::search('bugs bunny')->get();
Run Code Online (Sandbox Code Playgroud)
还有 where 子句在这里不起作用。我想要这样的东西:
Route::get('/search/{city}', function (\App\City $city) {
$companies = $city->companies()->search('bugs bunny');
});
Run Code Online (Sandbox Code Playgroud)
我想你明白了。谢谢!
首先,我会将逻辑移至控制器。完成此操作后,您可以在控制器中使用一个方法来实现所需的搜索,如下所示:
public function search(City $city){
$companiesInCity = Company::where('city_id', $city->id)->get('id')->toArray();
$companiesMatching = Company::search('bugs bunny')->whereIn('id', $companiesInCity)->get();
return view('search.result', [
'result' => $result
]);
}
Run Code Online (Sandbox Code Playgroud)
最后从路由 web.php 调用该函数。
在我的开发环境中工作。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |