J'ai un problème avec mes inscriptions éloquentes. J'ai 4 tableaux relation
Tableau des prêts / Prêts
{ 'loan_id' => 1, 'inventory' => 'keyboard', 'user' => 'This is my name', 'quantity' => 4 }
Tableau détaillé des prêts / Détails des prêts
user_id | Name 1 | This is my name
Tableau d'inventaire / Inventaires
inventory_id | name_inventory 4 | Keyboard .
Tableau des utilisateurs / Utilisateurs p>
loandetail_id | loan_id | inventory_id 1 | 1 | 4 .
Je veux un résultat comme celui-ci avec des requêtes éloquentes
loan_id | quantity | user_id 1 | 4 | 1 .
3 Réponses :
Vous devez avoir mappé les relations suivantes dans vos modèles.
Loan.php
return [ 'loan_id' => $loan->id, 'inventory' => $loan->inventory, //this will return the full inventory object you can do $loan->inventory->name_inventory to access attributes 'user' => $loan->user->name, 'quantity' => $loan->quantity ]
LoanDetails.php
$loan = Loan::with('loanDetails.user', 'loanDetails.inventory')->find(1);
Arter que vous pouvez le faire comme ceci pour interroger les données de la base de données,
public function inventory() { return $this->belongsTo(Inventory::class); } public function loan() { return $this->belongsTo(Loan::class); }
puis pour obtenir le résultat souhaité comme celui-ci,
public function loanDetails() { return $this->hasMany(LoanDetail::class); } public function user() { return $this->belongsTo(User::class); }
ceci est la réponse d'erreur Appel à une relation non définie [Loandetails] sur le modèle [App \ Loan].
ceci est mon modèle pastebin.com/AGRPRkmm
J'ai supposé que vous n'aviez pas mappé toutes les relations, laissez-moi mettre à jour la réponse
$data = DB::table('loan') ->select('loan.id as loan_id','invetoris.name_inventory as inventory','users.Name as users', 'loan.quantity' ) ->join('loandetail', 'loandetail.loan_id', '=', 'loan.loan_id') ->join('inventoris', 'inventoris.inventory_id', '=', 'loandetail.inventory_id')->join('users', 'users.user_id', '=', 'loan.user_id') ->get()->toArray(); $info = []; foreach($data as $key => $val) { $info[] = [ 'loan_id' => $val['loan_id'], 'inventory' => $val['inventory'], 'user' => $val['users'], 'quantity' => $val['quantity'] ]; }
$data = DB::table('Loan') ->select('Loan.id as loan_id','Inventories.name_inventory as inventory','Users.Name as users', 'Loan.quantity' ) ->join('Loandetails', 'Loandetails.loan_id', '=', 'Loan.loan_id') ->join('Inventories', 'Inventories.inventory_id', '=', 'Loandetails.inventory_id') ->join('Users', 'Users.user_id', '=', 'Loan.user_id') ->get()->toArray();