GOOGLE ADS

vendredi 29 avril 2022

Laravel interrogeant pour obtenir des données d'une table en utilisant une autre table et une entrée

Donc, pour le contexte, 3 tables.

tableau des emprunteurs

 protected $table = 'borrowers';
protected $primaryKey = 'id';
protected $fillable = ['borrower_name', 'IC', 'phone_no', 'address'];

tableau des livres

 protected $primaryKey = 'id';
protected $fillable = ['ISBN', 'year', 'book_title', 'author', 'publisher_name', 'category'];

et enfin emprunter la table avec id, loaner_id, book_id, issue_date, return_date et late_return_status qui est un bool. id_emprunteur et id_livre sont des clés étrangères.

L'utilisateur effectue également une recherche pour choisir les livres empruntés de l'emprunteur à afficher. J'ai obtenu l'ID de l'emprunteur et je l'ai stocké dans une variable $id.

J'ai donc besoin d'interroger pour obtenir toutes les informations de la table des livres sur les livres qu'un emprunteur a empruntés + issue_date, return_date et late_return_status.

Voici ce que j'ai essayé jusqu'à présent.

 $books_borrowed = Borrow::join('books', 'borrow.book_id', '=', 'books.id')
->where('borrow.borrower_id', '=', $id)
->get(['books.ISBN', 'books.book_title','books.year','books.author', 'books.publisher_name',
'borrow.issue_date', 'borrow.due_date', 'borrow.late_return_status']);


Solution du problème

Je crois qu'il manque une autre jointure pour que les deux tables soient liées aux clés étrangères ?

$books_borrowed = Borrow::join('books', 'borrow.book_id', '=', 'books.id')
->join('borrowers', 'borrow.borrower_id', '=', 'borrowers.id')
->where('borrow.borrower_id', '=', $id)
->get(['books.ISBN', 'books.book_title', 'books.year','books.author', 'books.publisher_name',
'borrow.issue_date', 'borrow.due_date', 'borrow.late_return_status']);

De cette façon, vous avez les 3 tables jointes :

--------------  ----------
borrowers.id books.id
-------------- ----------
| |
| -------------------- |
|---> borrow.borrower_id |
borrow.book_id <------|
--------------------

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...