L'utilisateur peut avoir de nombreux appareils et chaque périphérique peut avoir de nombreuses interfaces.
Je souhaite obtenir l'utilisateur avec ses appareils et les interfaces de chaque périphérique. P>
Modèle utilisateur Strong> P> Auther::user()->devices->interfaces
3 Réponses :
Vous voudrez regarder le HasmanyTathrough relation.
La relation "HAS-TIX" offre un raccourci pratique pour accéder aux relations distantes via une relation intermédiaire. Par exemple, un modèle de pays peut avoir de nombreux modèles de poste via un modèle utilisateur intermédiaire. Dans cet exemple, vous pouvez facilement collecter tous les poteaux de blog pour un pays donné. P> blockQuote>
quelque chose sur ces lignes sur votre modèle utilisateur: p>
xxx pré> car votre utilisateur a de nombreuses interfaces à travers em> leurs appareils. p> p>
Je dois donc modifier la interface code> pour appartenir à
app \ périphérique code> et
app \ utilisateur code>? À l'heure actuelle, il n'appartient qu'à
app \ périphérique code>
@Antoniostsimourtos n ° Les interfaces appartiennent aux périphériques. Les appareils appartiennent aux utilisateurs. Ainsi, les interfaces appartiennent aux utilisateurs à travers b> leurs appareils. La relation hasmanyTathrough code> comprend ce type de relation imbriquée et peut donc être utilisé pour faire exactement ce que vous voulez.
Merci pour l'explication! C'est ce que je veux réellement atteindre. Donc, je dois mettre la ligne de code unique sur mon modèle utilisateur? Quelque chose devrait-il être changé sur les migrations? Pourriez-vous s'il vous plaît éditer votre réponse et écrire le (s) modèle (s) changements (s)?
@Antoniostsimourtos Veuillez lire le lien vers la documentation que j'ai incluse. Il comprend une exemple de structure de base de données et tous les détails nécessaires à la mise en œuvre.
Vous pouvez boucler les périphériques et obtenir des interfaces pour chaque périphérique.
foreach(Auth::user()->devices as $device) { foreach($device->interfaces as $interface) { // do whatever you want } }
Oui mais je ne veux pas obtenir les objets réels que le nombre de tous les interfaces $ code> donc je veux éviter l'itération de la boucle
Ensuite, vous devez utiliser hasmanyTathrough code> puis utiliser
compteur () code>.
Vous pouvez utiliser:
$id = Auth::user()->id; $userwithDetails = User::with('devices', 'devices.interfaces')->where('id', $id)->first();