2017-10-17 4 views
0

Ich habe 2 Tabellen "Artikel" und "Marken". Die Artikel enthalten Produktdetails wie Artikel-ID, Name und Marken-ID, während die Marken Marken-ID und Markenname enthalten. Ich möchte Artikeldaten abrufen, in denen ich Marken und Artikel beitreten kann.ORM in Laravel 5.4 funktioniert nicht

Dies ist mein Controller.

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

Dies ist mein Modell.

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

Ich bekam Folgendes während der Ausführung in meinem Browser. $ diese verwenden, wenn sie nicht in Objektkontext

+1

Sie eine statische Methode haben und Sie verwenden $ dies darin, was haben Sie gedacht, wird passieren? – madalinivascu

Antwort

0

Entfernen Sie das Schlüsselwort static

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

in Ihrer Marken brauchen Sie

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

und dem Controller:

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

Ich denke Artikel 'gehörtTo' zu Marke –

+0

Arbeitete gut, als ich setzte. öffentliche Funktion Marken() { Rückgabe $ this-> hasOne ('App \ Marken', 'Marke_ID', 'Marke_ID'); } –

+0

sollten Sie es 'brand' nennen, weil Sie' 1: 1' 1 Artikel Marke 1 haben, – madalinivascu

0

wie Try this:

Modelldatei:

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

Und Controller wie folgt aus:

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