首页 > 解决方案 > 创建一个搜索算法,该算法在一个单独的数据库表中包含一些关键字,该数据库表链接到 Laravel 主表

问题描述

我正在尝试通过产品表创建搜索算法,但使用名为类别的不同表进行分类。我的搜索算法只能搜索产品表,但无法将类别关键字与产品表匹配。下面是我在控制器中的搜索功能。

        $product = $request->input('product');

        $categories = Category::with('categories')->where(['parent_id' => 0])->get();

        $productsAll = Product::query()->where('product_name', 'LIKE', "%{$product}%")
        ->orWhere('state', 'LIKE', "%{$product}%")
        ->orWhere('lga', 'LIKE', "%{$product}%")->where('status', 1)->get();

        return view('pages.results')->with(compact('categories','productsAll','product'));
    }

我的类别模型


namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model implements Searchable
{
   
    public function categories(){
        return $this->hasMany('App\Category','parent_id');
    }

}

我的产品型号


namespace App;

use Illuminate\Database\Eloquent\Model;
use Auth;
use Session;
use DB;

class Product extends Model implements Searchable
{
  
    public function attributes(){
        return $this->hasMany('App\Product','id');
    }

    public static function productCount($cat_id){
        $catCount = Product::where(['category_id'=>$cat_id,'status'=>1])->count();
        return $catCount;
    }

    public static function getProductStatus($product_id){
        $getProductStatus = Product::select('status')->where('id',$product_id)->first();
        return $getProductStatus->status;
    }

    public static function getCategoryStatus($category_id){
        $getCategoryStatus = Category::select('status')->where('id',$category_id)->first();
        return $getCategoryStatus->status;
    }
}

标签: phpmysqllaravel

解决方案


推荐阅读