2017-10-17 144 views
0

我有2个表“项目”和“品牌”。商品包含产品详细信息,如item_id,name和brand_id,而品牌包含brandId和brand_name。我想获取可加入品牌和商品的商品数据。ORM在laravel 5.4不工作

这是我的控制器。

public function filters($id){ 
    $items = Items::brands();  
    return $items; 
} 

这是我的模型。

public static function brands(){ 
    return $this->hasOne('App\Brands'); 
} 

我在浏览器上运行时遇到以下情况。 当不在对象范围内使用$此

+1

你有一个静态方法,并使用了$这个了,为什么你觉得会发生什么? – madalinivascu

回答

0

删除static关键字

public function brand(){ 
    return $this->hasOne('App\Brands','brand_id'); 
} 

在你的品牌,你需要

public function item(){ 
    return $this->belongsTo('App\Items','brandId','brand_id'); 
} 

和控制器:

public function filters($id){ 
    $items = Items::all()->with('brands')->get();  
    return $items; 
} 
+0

我认为物品'belongsTo'对品牌 –

+0

当我放时,工作正常。 public function brands(){ return $ this-> hasOne('App \ Brands','brand_id','brand_id'); } –

+0

你应该将它命名为'品牌',因为你有'1:1'1品牌1品牌, – madalinivascu

0

尝试这样的:

模型文件:

public function brands(){ 
    return $this->hasOne('App\Brands'); 
} 

和控制器这样的:

public function filters($id){ 
    $items = Items::select("*")->with('brands')->get()->toArray();  
    return $items; 
}