2017-01-08 4 views
3

Ich möchte ein CRUD-System für mehrere Anbieter erstellen, um ihre Produkte in der Datenbank zu erstellen.Mehrere CRUD-System Laravel 5.2

Bisher habe ich es so gemacht, dass ein Hersteller alle Produkte in der Datenbank erstellen, lesen, aktualisieren und löschen kann. Aber was ich tun möchte, ist jeder Anbieter sollte CRUD nur die Produkte, die er erstellt hat. Wie kann ich das erreichen? dies ist

Die Beziehung zwischen Benutzer und Produkte:

In Produktmodell:

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

Benutzermodell:

public function products() { 
     return $this->hasMany('App\Product'); 
    } 

Ich präsentiere die Produkte wie folgt aus:

@foreach ($products as $product) 
    <tr> 
     <td>{{ $product->id }}</td> 
     <td>{{ $product->title }}</td> 
     <td>{{ $product->description }}</td> 
    </tr> 
@endforeach 

Sollte ich Pivot-Tabellen oder ähnliches verwenden? Jede Hilfe wird geschätzt!

Antwort

3

Option 1

Erhalten Sie alle Produkte authentifizierten Benutzer mit einzelnen Abfrage erstellt hat:

$products = Product::where('user_id', auth()->user()->id)->get(); 

Und dann iterieren Produkte:

@foreach ($products as $product) 

Option 2

Sie können load() Produkte:

auth()->user()->load('products'); 

Und dann iterieren:

@foreach (auth()->user()->products as $product) 
+0

Ich habe nicht in Produkte Tabelle user_id. Kann ich etwas anderes benutzen? Oder soll ich dieses neue Feld importieren? – daino92

+0

@ daino92 Sie haben die Beziehungen gezeigt, die ohne 'user_id' nicht funktionieren. Sie sollten es zur Tabelle hinzufügen und beim Erstellen eines neuen Produkts mit der Benutzer-ID füllen. Wie sonst werden Sie wissen, dass das Produkt dem Benutzer gehört? –

+0

Ja, Sie haben Recht. Wie kann ich das machen? – daino92