Ich habe drei Tabellen: Benutzer, Elemente und user_items. Ein Benutzer hat viele Elemente und ein Element gehört vielen Benutzern.Laravel 4 eloquent Pivot-Tabelle
Die Tabellen:
Users
id
username
password
Items
id
name
equipable
User_items
id
user_id
item_id
equipped
Die Modelle:
class User extends Eloquent {
public function items()
{
return $this->belongsToMany('Item', 'user_items')
->withPivot('equipped');
}
}
class Item extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'user_items');
}
}
Im Pivot (user_items) Tabelle habe ich eine sehr wichtige Säule "ausgestattet" genannt.
Ich habe ein Formular, wo Benutzer Gegenstände ausstatten, unquip und werfen können. Dieses Formular enthält ein ausgeblendetes Feld mit der Tabellenzeilen-ID pivot (user_items). Wenn ein Benutzer versucht, einen Gegenstand auszustatten, prüft das System, ob der Gegenstand ausrüstbar ist.
Also, ich möchte ein Objekt mit den Pivot-Daten und die Daten, basierend auf item_id aus der Pivot-Tabelle, kann ich an den Handler senden (wo alle Logik behandelt wird).
Also was ich tun muss, ist zuerst auf die Pivot-Tabelle zuzugreifen und dann auf die Artikeltabelle zuzugreifen.
Etwas Ähnliches (nicht funktioniert):
$item = User::find(1)->items->pivot->find(1);
Ist das möglich zu tun?
Vielen Dank! Das half mir - nach 2 Stunden schlug ich meinen Kopf vom Schreibtisch. –
für weitere Details beziehen Sie sich auf http://laravel.com/docs/eloquent#working-with-pivot-tables –
:) Yay! brauchte eine Weile um zu erkennen, dass ich "-> Pivot" vergessen habe. +1 – rofavadeka