2017-10-17 43 views
0

J'ai 2 tableaux "Articles" et "marques". Les articles contiennent des détails sur le produit, tels que item_id, name et brand_id, tandis que brands contient brandId et brand_name. Je veux récupérer des données d'objet dans lesquelles je peux joindre des marques et des articles.ORM dans laravel 5.4 ne fonctionne pas

Ceci est mon contrôleur.

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

Ceci est mon modèle.

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

J'ai obtenu ce qui suit en cours d'exécution sur mon navigateur. Utiliser $ quand pas dans le contexte de l'objet

+1

vous avez une méthode statique et que vous utilisez $ ce dans ce que pensez-vous qui va se passer? – madalinivascu

Répondre

0

Supprimez le mot clé statique

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

dans vos marques vous devez

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

et votre contrôleur:

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

Je pense que l'article 'belongsTo' à la marque –

+0

A bien fonctionné quand j'ai mis. public function brands() { return $ this-> hasOne ('App \ Marques', 'brand_id', 'brand_id'); } –

+0

vous devriez le nommer 'marque' parce que vous avez la marque' 1: 1' 1 item 1, – madalinivascu

0

Essayez comme ceci:

Modèle fichier:

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

Et contrôleur comme ceci:

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