Bonjour à tous,
Voici une petite astuce pour forcer Eloquent (ou MEloquent pour MongoDB) d'utiliser une table ou une collection sur tout un model de manière transparente, facultative et dynamique.
Je n'ai trouvé cette astuce sur aucun forum, jusque là. Je partage donc ma trouvaille ici.
Très utile pour la gestion d'un multi-site et éviter de renseigner à chaque requête quelle table ou connection utiliser. Et surtout, très simple à mettre en place !
Avant de commencer, il faut savoir que chaque requête sur un model va créer une nouvelle instance de la class même si l'appel est static. Ainsi :
Va créer une nouvelle instance de User et appeler la méthode "find".
Par conséquent, chaque requête va appeler le constructeur du model.
Ainsi, il nous suffit de modifier la propriété $this->table dans le constructeur du model pour appliquer la modification à toutes les requêtes !
Tout simplement !
Par contre, l'astuce ne fonctionne pas pour les requêtes via la facade DB. Vous pouvez toutefois créer une fonction pour retourner le nom de la table à utiliser.