首页 > 解决方案 > Laravel:搜索查询

问题描述

这是我在多个表中获取数据的查询。

查询外观:

$userPostDetails = Post::with(['product','postattribute.attribute.category','user.userDetails'])
                    ->orderBy('id','desc')
                    ->get();

它根据我的查询返回所有数据。

现在我想要在查询中的所有表中进行搜索,即

[Post,Products,post_attributes,attrbute,category,users,userdetails]

所以如果在我的搜索参数中如果我有一个搜索参数

categroyTitle

它将返回搜索详细信息。如果NULL返回全部。

我要搜索的所有表格都相同:

如果我想在posts表中搜索Active我尝试过的帖子

if(isset($any_or_active)) {
   $is_any_active = $any_or_active;
 } 

并将其添加到上面的查询中 ->whereIn('demand_or_supply', $is_demand_supply)

但如果

$is_demand_supplyNULL

我怎样才能做到这一点 ?

标签: laravellaravel-5.5

解决方案


我认为使用 Laravel Searchable (sofa eloquence) 会有所帮助。

运行作曲家需要沙发/口才

例如在每个模型中

use Sofa\Eloquence\Eloquence;
protected $searchableColumns = [
   'country.name'(relation) => 20 (weight),
   'user.email' => 10,
   'user.name' => 25,
   'user.type' => 5,
   'gender' (attribute) => 10 (weight),
   'nationality' => 2,
];

这是 github 上此包的链接 https://github.com/jarektkaczyk/eloquence

从它的网站,这是一个详细的解释 https://softonsofa.com/laravel-searchable-the-best-package-for-eloquent/

希望能帮助到你。


推荐阅读