laravel 5-通过多对多搜索获得相关产品

时间:2018-10-29 20:05:16

标签: laravel laravel-5 eloquent laravel-query-builder

Table 1: products: id,title
Table 2: features: id,name,values
Table 3:feature_product:id,product_id,values

当我在values表的feature_product中进行搜索时,我希望获得所有相关产品。

我这样做:

在产品型号中:

public function features()
{
    return $this->belongsToMany(Feature::class)->withPivot('values');
}

public function feature()
{
    // ???
}

并查询搜索内容:

 $q = 'yellow';
 $query->where(function($query) use ($q)
 {
    $query->WhereHas('feature' , function ($query) use 
    ($q){$query->where('values' , 'LIKE' , '%' . $q . '%' );});
 }

如何搜索产品的相关功能? (并获得这些产品)

我认为我必须在产品模型的此功能中做些事情:

public function feature()
{
        // ???
}

1 个答案:

答案 0 :(得分:1)

在产品型号中:

public function features()
{
  return $this->belongsToMany(Feature::class)->withPivot('values');
}

public function feature()
{
   // ??
}

在特征模型中:

public function products(){
 return $this->belongsToMany('App\Product')->withPivot('values');
}

和查询搜索

$query->WhereHas('features' , function ($query) use ($q) {
$query->where('feature_product.values' , 'LIKE' , '%' . $q . '%' );
});