首页 文章

想要从laravel 5.2中的三个表中获取数据

提问于
浏览
0

我有一个小问题,我需要你的帮助,请看下面 .

我想从产品表中获取所有数据,包括城市,价格,类型,类别等条件 . 我可以获取所有数据,但我无法从产品模型中获取所有其他条件的类别数据 .

下面是我的表和Eloquent关系 . 我正在使用Laravel 5.2 .

products ->foreign_key('subcategory_id')
subcategories ->foreign_key('category_id')
category
users: ->foreign_key('product_id')
users table columns: ->city, price, product_id

关系:

User Model:
public function product(){
    return $this->hasMany('App\Product');
}

Product Model:
public function subcategory(){
    return $this->belongsTo('App\Subcategory', 'subcategory_id');
}


Subcategory Model:
public function product(){
    return $this->hasMany('App\Product', 'subcategory_id');
}
public function category(){
    return $this->belongsTo('App\Category');
}


Category Model:
public function subCategory(){
    return $this->hasMany('App\Subcategory');
}

public function product(){
   return $this->hasManyThrough('App\Product', 'App\Subcategory');
}

这是我的查询(在ProductsController.php中) .

$city_id, $category_id, $min_price, $max_price : demo data passed

//fetching city data
$products = Product::whereHas('user', function($query) use($city_id) {
     $query->where('city_id', $city_id);
});

//fetching category data (I am not sure about this part)
$products =  $products->whereHas('category', function($query) use($category_id) {
    $query->where('id', $category_id);
});

//fetching price data
$products = $products->where('price', '>=', $min_price)->where('price', '<=', $max_price);

//sub category filtering
$products = $products->where('subcategory_id', 1);


$products = $products->get()->toArray();

return $products;

任何帮助,将不胜感激 . 提前致谢 .

1 回答

  • 1

    我想你可以使用 with() 方法:

    产品型号:添加以下方法

    public function subcategory($category_id){
        return $this->belongsTo('App\Subcategory', 'subcategory_id')->with(`category`)->where('category_id',$category_id);
    }
    

    现在在Controller中,您可以检查产品是否属于该类别,

    $products = $products->subcategory($category_id);
    

    这也将为您提供类别数据 .

相关问题