2017-07-21 13 views
1

Hallo ich muss Benutzer Elemente von Tabellenname Items anzeigen.Laravel 5.4 Beziehung

Ich habe 3 Modelle.

User-Modell:

public function userItem() 
{ 
    return $this->hasMany('App\UserItem', 'item_id'); 
} 

UserItem Modell:

public function user() 
{ 
    return $this->belongsTo('App\User', 'user_id'); 
} 

Was Item Modell schreiben diese Beziehung erfolgreich zu machen. So könnte ich Artikel von items table anzeigen.

Wenn ich jetzt tun:

ich Informationen aus user_items Tabelle von DB.

, wenn ich dies tun @foreach(Auth::user()->userItem as $item) ich diese:

Spalte nicht gefunden: 1054 Unknown column 'user_items.user_items' in 'where clause'

+0

Sie haben also eine Tabelle Benutzer, eine Tabelle Elemente und möchten etwas wie ein Inventar erstellen, richtig? – Astinox

+0

Ja. Ich in meiner 'user_items' Tabelle bekomme ich' user_id' und 'item_id' @Astinox – feknaz

+0

Und die Frage ist? –

Antwort

2

Ich glaube, Sie viele zu viele Beziehung

verwenden möchten, müssen Sie zwei Modelle User und Artikel

und 3 Tabellen: -Anwender -Items -user_items

Benutzer Modell sein sollte dies:

public function userItem() 
{ 
    return $this->belongsToMany('App\Item','user_items','user_id','item_id'); 
} 

und Artikel Modell:

public function user() 
{ 
    return $this->belongsToMany('App\User','user_items','item_id','user_id'); 
} 

und Sie benötigen eine Tabelle, die Sie es user_items namens

und Sie brauchen nicht userItem Modell definieren Sie Beziehungen in diesem Modell entfernen

in Ihrer Klinge verwenden Sie diesen Code:

@foreach(Auth::user()->userItem as $item) 
0

Sie sind Aussteller eine many-to -viele Beziehungen und dennoch Methoden für Eins-zu-Viele-Beziehungen. Für eine viele zu viele Beziehung, verwenden Sie den folgenden Code in Ihre Modelle:

// Benutzermodell:

public function userItem() 
{ 
    return $this->hasMany('App\UserItem', 'user_items', 'user_id', 'item_id'); 
} 

// userItem Modell:

public function user() 
{ 
    return $this->hasMany('App\User', 'user_items', 'item_id', 'user_id'); 
} 

für eine many-to-many Beziehung, Sie benötigen eine hasMany-Methode für beide Modelle.

Informationen zu den Parametern der hasMany Verfahren sowie weitere Informationen über many-to-many-Beziehungen finden Sie in der Dokumentation zu many-to-many-Beziehungen lesen: https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

Hoffnung, das hilft.

+0

Hey, wenn ich das '@foreach (Auth :: user() -> userItem als $ item)' Ich bekomme das: 'Spalte nicht gefunden: 1054 Unbekannte Spalte 'user_items.user_items' in 'Where-Klausel'' – feknaz