我在产品和类别之间存在多对多的关系,表与数据透视表为 Product_Category
在产品型号:
中public function categories(){
return $this->belongsToMany('\App\Models\Categories', 'product_category', 'product_id', 'category_id');
}
在类别模型中:
public function products(){
return $this->belongsToMany('\App\Models\Products', 'product_category', 'category_id', 'product_id');
}
在 Product_Category 型号中:
public function products(){
return $this->belongsTo('App\Models\Products');
}
public function categories() {
return $this->belongsTo('App\Models\Categories');
}
在 ProductController :
中$data = Products::with('categories')->select('id','product_name','user_id','created_at')->orderBy('id', 'desc')->paginate(20);
然后我用下面的函数进行测试:
foreach ($data as $val) {
$cats = $val['categories'];
}
我尝试var_dump()
,但没有发生任何事情:
object(Illuminate\Database\Eloquent\Collection)#472 (1) {
["items":protected]=> array(0) { }
}
请帮帮我
答案 0 :(得分:2)
在应用程序中创建数据透视表模型后,此数据透视表与每个相应的模型具有一对多的关系。即 Product_Category 模型与产品和类别模型具有一对多的关系。因此,产品和类别模型中的代码如下所示:
在产品型号:
中public function categories(){
return $this->hasMany('\App\Models\ProductCategory', 'category_id');
}
在类别模型中:
public function products(){
return $this->hasMany('\App\Models\ProductCategory','product_id');
}
如上所述进行更改,它应该正常工作。