laravel 5很多人不工作

时间:2018-03-06 07:10:37

标签: laravel-5

我在产品类别之间存在多对多的关系,表与数据透视表为 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) { } 
}

请帮帮我

1 个答案:

答案 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');
    }
    

如上所述进行更改,它应该正常工作。