Mam trzy tabele: użytkownicy, przedmioty i user_items. Użytkownik ma wiele przedmiotów, a przedmiot należy do wielu użytkowników.Laravel 4 elokwentny stół obrotowy
Tabele:
Users
id
username
password
Items
id
name
equipable
User_items
id
user_id
item_id
equipped
modelach:
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');
}
}
W (user_items) tabeli przestawnej mam bardzo ważną kolumnę o nazwie "wyposażona".
Mam formularz, w którym użytkownicy mogą wyposażyć, usunąć i wrzucić przedmioty. Ten formularz zawiera ukryte pole z identyfikatorem wiersza tabeli przestawnej (user_items). Tak więc, gdy użytkownik próbuje wyposażyć przedmiot, system sprawdza, czy przedmiot jest odpowiedni.
Tak więc chcę obiektu z danych przestawnych i danych pozycji, w oparciu o item_id z tabeli przestawnej, mogę wysłać do obsługi (gdzie jest obsługiwana cała logika).
To, co muszę zrobić, to najpierw uzyskać dostęp do tabeli przestawnej, a następnie uzyskać dostęp do tabeli przedmiotów.
Coś takiego (nie działa):
$item = User::find(1)->items->pivot->find(1);
Czy jest to możliwe do zrobienia?
Dziękujemy! Pomogło mi to - po 2 godzinach uderzania głową w biurko. –
po więcej szczegółów zobacz http://laravel.com/docs/eloquent#working-with-pivot-tables –
:) Yay! zajęło mi trochę czasu, aby uświadomić sobie, że zapomniałem "-> pivot". +1 – rofavadeka