Comment définir des relations éloquentes dans mes modèles?
Jun 12, 2025 pm 05:13 PMPour définir les relations éloquentes, identifiez d'abord le type de relation en fonction de la structure de votre base de données et des besoins de récupération des données. 1. Comprendre les types de relations courantes: un à un (par exemple, l'utilisateur a un profil), un à plusieurs (par exemple, le post a de nombreux commentaires) et plusieurs à plusieurs (par exemple, l'utilisateur a de nombreux r?les). 2. Définissez les relations comme des méthodes de modèle qui renvoient les classes de relations intégrées d'Eloquent telles que Hasone, Hasmany ou Belongstomany, en utilisant des clés étrangères et locales appropriées, que vous pouvez personnaliser si elles diffèrent des valeurs par défaut de Laravel. 3. Pour les relations multiples-à-plusieurs, utilisez une table de pivot et ajustez son nom et ses clés au besoin, récupérant éventuellement des données de pivot supplémentaires avec withPivot (). 4. Configurer des relations inverses à l'aide d'appartenance pour accéder au modèle parent à partir du modèle connexe, permettant un accès bidirectionnel. Les types de relations correctement correspondants et les clés ou les tables de personnalisation garantissent une intégration transparente avec votre structure de données.
Lors de la définition de relations éloquentes dans vos modèles, la clé est de faire correspondre le type de relation avec la fa?on dont vos tables de base de données sont structurées et comment vous avez l'intention de récupérer des données. L'ORM éloquent de Laravel rend cela simple avec des méthodes intégrées pour les types de relations communes.
1. Comprendre les types de relations les plus courants
Avant d'écrire un code, il est utile de savoir de quel type de relation dont vous avez besoin:
- One-à-ONE : un enregistrement dans un tableau concerne exactement un enregistrement dans un autre (par exemple, l'utilisateur a un profil).
- One-to-Many : Un enregistrement peut avoir de nombreux enregistrements connexes (par exemple, Post a de nombreux commentaires).
- Plusieurs à plusieurs : les enregistrements des deux c?tés peuvent être liés à plusieurs entrées de l'autre c?té (par exemple, l'utilisateur peut avoir de nombreux r?les et un r?le peut appartenir à de nombreux utilisateurs).
Chacun d'eux utilise une méthode légèrement différente à l'intérieur de votre modèle.
2. Définissez les relations de base à l'intérieur de votre modèle
Les relations éloquentes sont définies comme des méthodes dans vos classes de modèle. Ces méthodes renvoient une instance d'une classe de relations comme HasOne
, HasMany
ou BelongsToMany
.
Par exemple, si un utilisateur a un profil:
// dans le modèle user.php Profil de la fonction publique () { return $ this-> Hasone (Profil :: class); }
Si un message a de nombreux commentaires:
// dans le modèle post.php Commentaires de la fonction publique () { retourner $ this-> hasmany (commentaire :: classe); }
Par défaut, Eloquent suppose des clés étrangères en fonction du nom du modèle (comme user_id
pour le modèle utilisateur). Si votre clé étrangère est différente, vous pouvez le spécifier:
return $ this-> Hasone (Profil :: class, 'Foreign_Key');
Et si nécessaire, vous pouvez également définir la clé locale (la colonne sur le modèle actuel):
return $ this-> Hasone (Profil :: class, 'Foreign_key', 'local_key');
3. Gérer les relations de plusieurs à plusieurs avec des tables de pivot
Les relations multiples-à-plusieurs nécessitent un troisième tableau - généralement nommé comme role_user
si vous connectez les utilisateurs et les r?les.
Pour le définir:
// dans le modèle user.php R?les de la fonction publique () { retourner $ this-> appartenance (r?le :: classe); }
Cela recherchera une table role_user
par défaut, avec user_id
et role_id
. Si votre table ou vos clés diffèrent, vous pouvez les ajuster:
return $ this-> appartenance (r?le :: class, 'user_roles', 'user_id', 'role_id');
Vous pouvez même récupérer des données supplémentaires de la table de pivot à l'aide de withPivot()
:
return $ this-> appartensible (r?le :: class) -> withPivot ('Created_at');
Maintenant, lorsque vous accédez à la relation, les champs de pivot seront disponibles.
4. Utilisez des relations inverses pour un accès plus facile
Si vous définissez un hasOne
ou hasMany
d'un utilisateur à l'autre, vous pouvez également vouloir l'inverse - obtenir l'utilisateur d'un profil.
Utilisez belongsTo
pour cela:
// dans le modèle de profil.php Fonction publique User () { return $ this-> appartenance (user :: class); }
Cela met en place le lien inverse afin que vous puissiez faire des choses comme $profile->user->name
.
Ainsi, en gros, vous définissez chaque relation comme une méthode de votre modèle, choisissez le bon type ( hasOne
, hasMany
, belongsTo
, belongsToMany
) et personnalisez les clés ou les noms de table s'ils ne correspondent pas à la convention de Laravel.
Ce n'est pas compliqué une fois que vous vous êtes habitué à faire correspondre le type de relation avec votre structure de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L’IA change effectivement les mathématiques. Récemment, Tao Zhexuan, qui a prêté une attention particulière à cette question, a transmis le dernier numéro du ? Bulletin de l'American Mathematical Society ? (Bulletin de l'American Mathematical Society). En se concentrant sur le thème ? Les machines changeront-elles les mathématiques ? ?, de nombreux mathématiciens ont exprimé leurs opinions. L'ensemble du processus a été plein d'étincelles, intense et passionnant. L'auteur dispose d'une équipe solide, comprenant Akshay Venkatesh, lauréat de la médaille Fields, le mathématicien chinois Zheng Lejun, l'informaticien de l'Université de New York Ernest Davis et de nombreux autres universitaires bien connus du secteur. Le monde de l’IA a radicalement changé. Vous savez, bon nombre de ces articles ont été soumis il y a un an.

Boston Dynamics Atlas entre officiellement dans l’ère des robots électriques ! Hier, l'Atlas hydraulique s'est retiré "en larmes" de la scène de l'histoire. Aujourd'hui, Boston Dynamics a annoncé que l'Atlas électrique était au travail. Il semble que dans le domaine des robots humano?des commerciaux, Boston Dynamics soit déterminé à concurrencer Tesla. Après la sortie de la nouvelle vidéo, elle a déjà été visionnée par plus d’un million de personnes en seulement dix heures. Les personnes agées partent et de nouveaux r?les apparaissent. C'est une nécessité historique. Il ne fait aucun doute que cette année est l’année explosive des robots humano?des. Les internautes ont commenté : Les progrès des robots ont fait ressembler la cérémonie d'ouverture de cette année à des êtres humains, et le degré de liberté est bien plus grand que celui des humains. Mais n'est-ce vraiment pas un film d'horreur ? Au début de la vidéo, Atlas est allongé calmement sur le sol, apparemment sur le dos. Ce qui suit est à couper le souffle

Imaginez un modèle d'intelligence artificielle qui non seulement a la capacité de surpasser l'informatique traditionnelle, mais qui permet également d'obtenir des performances plus efficaces à moindre co?t. Ce n'est pas de la science-fiction, DeepSeek-V2[1], le modèle MoE open source le plus puissant au monde est ici. DeepSeek-V2 est un puissant mélange de modèle de langage d'experts (MoE) présentant les caractéristiques d'une formation économique et d'une inférence efficace. Il est constitué de 236B paramètres, dont 21B servent à activer chaque marqueur. Par rapport à DeepSeek67B, DeepSeek-V2 offre des performances plus élevées, tout en économisant 42,5?% des co?ts de formation, en réduisant le cache KV de 93,3?% et en augmentant le débit de génération maximal à 5,76 fois. DeepSeek est une entreprise explorant l'intelligence artificielle générale

Cet article explore le problème de la détection précise d'objets sous différents angles de vue (tels que la perspective et la vue à vol d'oiseau) dans la conduite autonome, en particulier comment transformer efficacement les caractéristiques de l'espace en perspective (PV) en vue à vol d'oiseau (BEV). implémenté via le module Visual Transformation (VT). Les méthodes existantes sont globalement divisées en deux stratégies?: la conversion 2D en 3D et la conversion 3D en 2D. Les méthodes 2D vers 3D améliorent les caractéristiques 2D denses en prédisant les probabilités de profondeur, mais l'incertitude inhérente aux prévisions de profondeur, en particulier dans les régions éloignées, peut introduire des inexactitudes. Alors que les méthodes 3D vers 2D utilisent généralement des requêtes 3D pour échantillonner des fonctionnalités 2D et apprendre les poids d'attention de la correspondance entre les fonctionnalités 3D et 2D via un transformateur, ce qui augmente le temps de calcul et de déploiement.

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

La dernière vidéo du robot Optimus de Tesla est sortie, et il peut déjà fonctionner en usine. à vitesse normale, il trie les batteries (les batteries 4680 de Tesla) comme ceci : Le responsable a également publié à quoi cela ressemble à une vitesse 20 fois supérieure - sur un petit "poste de travail", en sélectionnant et en sélectionnant et en sélectionnant : Cette fois, il est publié L'un des points forts de la vidéo est qu'Optimus réalise ce travail en usine, de manière totalement autonome, sans intervention humaine tout au long du processus. Et du point de vue d'Optimus, il peut également récupérer et placer la batterie tordue, en se concentrant sur la correction automatique des erreurs : concernant la main d'Optimus, le scientifique de NVIDIA Jim Fan a donné une évaluation élevée : la main d'Optimus est l'un des robots à cinq doigts du monde. le plus adroit. Ses mains ne sont pas seulement tactiles

Plus t?t ce mois-ci, des chercheurs du MIT et d'autres institutions ont proposé une alternative très prometteuse au MLP – KAN. KAN surpasse MLP en termes de précision et d’interprétabilité. Et il peut surpasser le MLP fonctionnant avec un plus grand nombre de paramètres avec un très petit nombre de paramètres. Par exemple, les auteurs ont déclaré avoir utilisé KAN pour reproduire les résultats de DeepMind avec un réseau plus petit et un degré d'automatisation plus élevé. Plus précisément, le MLP de DeepMind compte environ 300 000 paramètres, tandis que le KAN n'en compte qu'environ 200. KAN a une base mathématique solide comme MLP est basé sur le théorème d'approximation universelle, tandis que KAN est basé sur le théorème de représentation de Kolmogorov-Arnold. Comme le montre la figure ci-dessous, KAN a

Ollama est un outil super pratique qui vous permet d'exécuter facilement des modèles open source tels que Llama2, Mistral et Gemma localement. Dans cet article, je vais vous présenter comment utiliser Ollama pour vectoriser du texte. Si vous n'avez pas installé Ollama localement, vous pouvez lire cet article. Dans cet article, nous utiliserons le modèle nomic-embed-text[2]. Il s'agit d'un encodeur de texte qui surpasse OpenAI text-embedding-ada-002 et text-embedding-3-small sur les taches à contexte court et à contexte long. Démarrez le service nomic-embed-text lorsque vous avez installé avec succès o
