Laravel雄辩的模式搜索无法正常工作

时间:2018-03-30 13:57:08

标签: mysql laravel laravel-5 eloquent

我正在尝试使用搜索字段的用户输入值来查询数据库。 但我得到的结果是完全错误的。它没有搜索词。 我不知道我在哪里做错了。我跟着l aravel doc,有些问题超过了stackoverflow,但是没有问题似乎有效。 任何人都可以检查我的查询,也许可以指导我找到正确的方向。

我的查询就像Query字词Rose一样,只有一条记录的标题名为Rose

public function catelogSearch(Request $request){

    if ($request->has('query') && $request->get('query')!= ''){
        $searchQuery = $request->get('query');

        $query = ProductCategory::with(['product'=>function($q) use($searchQuery){
            $q->where([
                ['product_type','both'],
                ['title','LIKE','%'.$searchQuery.'%'],
                ]);

            if(request()->segment(1)=='shopping'){
                $q->orWhere('product_type','shop');

            }elseif (request()->segment(1)=='subscription'){
                $q->orWhere('product_type','sub');
            }
            $q->whereHas('price',function ($q){
                $q->where('quantity','>',0);
                $q->where('status',1);
            });
        }])->with('product');

                $data['result']=$query->paginate(30)->toArray();

            print_r($data);

}

这个查询给了我数据库中的所有数据,不像它应该给我标题中的查询词。还请注意,我正在查询with('product')两次。如果我做了一次,它没有返回产品数据,它会返回产品的空响应。

任何人都可以建议我。 谢谢你。

网址: localhost:8000/shopping/catalogsearch/result?query=rose

模型关系 的 ProductCategory.php

 public function product()
    {
        return $this->belongsTo('App\Models\Product');
    }

Product.php

public function price(){
       return $this->hasMany('App\Models\ProductPrice');
    }

product_category表

    -----------------------------------------------
   id | product_id| category_id | sub_category_id |
    -----------------------------------------------

产品表

----------------------------
id | title | slug | product_type |
-----------------------------

产品价格表

----------------------------
id | product_id| price| quantity |
-----------------------------

1 个答案:

答案 0 :(得分:0)

       public function catelogSearch(Request $request){
            if ($request->has('query')){
             $searchQuery = $request->get('query');
             $query = ProductCategory::product;
             $query = $query->where('title', 'LIKE', '%'.$searchQuery.'%');
             if(request()->segment(1)=='shopping'){
              $query =  $query->where('product_type','shop');
            }elseif (request()->segment(1)=='subscription'){
              $query = $query->where('product_type','sub');
            }else{
              $query = $query->whereIn('product_type',array('shop','sub'));
}
         $query = $query->price->where('quantity','>',0)
                  ->where('status',1)->get();
dd($query);
        }
    }

我已经删除了这些代码,稍后我会在获得上述代码的所需输出后添加它。所以请尝试让我知道输出。

 if(request()->segment(1)=='shopping'){
                $q->orWhere('product_type','shop');

            }elseif (request()->segment(1)=='subscription'){
                $q->orWhere('product_type','sub');
            }