Question

Si j'ai un modèle Eloquent défini dans mon application qui a un certain nombre de relations différentes établies avec d'autres types de modèles, comment puis-je obtenir des informations sur toutes ces relations sans rien savoir d'autre sur le modèle avec lequel je travaille ?

Par exemple, imaginez un modèle de transaction simple qui peut avoir plusieurs lignes et également appartenir à un seul utilisateur.

Maintenant, étant donné une instance du modèle Transaction (remplie ou non), comment puis-je connaître ses relations avec les autres modèles ?

Juste pour être clair, je ne veux pas récupérer les données réellement associées, je veux juste savoir à quelle classe chaque relation fait référence et si elle est une à plusieurs, plusieurs à plusieurs, etc.

Tout conseil apprécié.

Merci

Était-ce utile?

La solution

Les modèles éloquents de Laravel ne fonctionnent pas de cette façon, les relations sont définies par des méthodes au sein du modèle et ne sont pas automatiquement chargées par le modèle lors de l'instanciation, d'où la nécessité d'appeler réellement ces méthodes lorsque vous souhaitez utiliser une relation spécifique.

Lorsque vous instanciez une classe de modèles, aucune relation n’est définie.Cela peut être démontré par ce qui suit :

$user = new User();

print_r($user->getRelations());

//Output : empty array

Comme vous pouvez le constater, le modèle ignore parfaitement les relations qu'il a pu ou non déclarer dans les méthodes relationnelles.Lorsque vous appelez une relation de modèles :

$user = new User();

$user->find(1)->roles()->get();

Eloquent définit la relation sur le modèle à l'aide d'une méthode setRelation($relation, $value) qui prend le nom de la méthode appelée comme premier argument et le retour de cette méthode comme second.Fournissant ainsi le contexte de la relation qui n'existe pas avant que vous la demandiez spécifiquement.

Je sais que ce n'est pas ce que vous espérez entendre, mais il n'y a aucun moyen de le faire avec Eloquent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top