Ho due tabelle: users
, orders
. Cerco di ottenere tutti gli ordini per l'utente corrente.Come ottenere i dati dalla tabella correlata in Laravel (uno a molti)?
Users Orders
_____ ______
id | name id | user_id
modello User:
public function orders(){
return $this->hasMany("App\Order");
}
Modello di ordine:
public function user(){
return $this->hasOne("App\User", 'user_id', 'id');
}
Query nel controllore:
public function index()
{
$orders = Order::where('user_id', Auth::guard('api')->id())->get();
return response()->json(
$orders->user
);
}
Ottengo risultato NULL, faccio qualcosa di sbagliato, perché ci sono righe correlate in entrambe le tabelle.
La funzione di controllo non funzionerà perché 'get()' metodo restituisce un insieme e si sta cercando di ottenere una proprietà 'user' di un collezione che non ha senso. Cosa dovrebbe fare quella funzione? –
Quindi, ho bisogno di ottenere tutte le informazioni sull'utente dalla tabella 'Utenti' e ottenere nella stessa richiesta tutti gli ordini dell'utente. Cosa invece 'get()' dovrei usare? – Dev
Cosa dire dell'uso di 'Auth :: user() -> id' invece di 'Auth :: guard (' api ') -> id()'? Ottengo null usando quello che hai. –