


Exemples détaillés de fonctionnement d'associations multi-tables dans YII2
Récemment, j'ai rencontré des problèmes liés à l'association multi-tables YII2 au travail. J'ai constaté qu'il n'y avait pas beaucoup d'informations sur cet aspect sur Internet, j'ai donc pensé à faire le tri moi-même pour pouvoir m'y référer lorsque j'en ai besoin. J'en ai besoin à l'avenir ou les amis qui en ont besoin peuvent s'y référer. L'article suivant vous présente principalement l'utilisation des associations multi-tables dans YII2. Les amis qui en ont besoin peuvent y jeter un œil ci-dessous.
Préface
Cet article donne une brève introduction à la requête associée à plusieurs tables de YII2.0. L'article le présente en détail à travers un exemple de code. Je ne dirai pas grand-chose ci-dessous. Jetons un coup d'œil à l'introduction détaillée :
Tout d'abord, expliquons la structure de la table
Structure des tablesMaintenant, il existe une table de commande, une table d'utilisateur, une table de liste de produits, une table d'inventaire de produitsDans YII, si vous souhaitez associer directement d'autres tables pour une requête, vous devez d'abord définir leur association dans le modèle
Commande
class Order extends \yii\db\ActiveRecord.{ // 关联函数以get+要关联的数据表名来命名 // 这是获取下订单的客户 public function getUser(){ // 第一个参数为要关联的子表模型类名, // 第二个参数指定 通过子表的user_id,关联主表的usesr_id字段 // 这里写清楚点大概意思就是User.user_id => Order.user_id return $this->hasMany(User::className(), ['user_id' => 'user_id']); } }
1. HasMany et hasOne utilisent
Utilisation associée
//获取订单信息 $order = Order::findOne(1); //根据订单信息获取到用户信息 $user = $order->user;
//返回订单信息(包括用户信息) $order = Order::find(1)->with('user'); //或者 $order = Order::find(1)->getUser();
SELECT * FROM order WHERE id=1; SELECT * FROM user WHERE user.user_id=order.user_id;
●S'il est appelé en tant que fonction, un objet ActiveQuery sera renvoyé ($customer->getOrders()->all())
●Si appelé en attribut, le résultat du modèle ($customer->orders) sera renvoyé directement
Si tel est le cas, le tableau de commande a changé. Nous espérons que si nous l'interrogeons à nouveau
$user = $order->user;
Et si vous souhaitez réexécuter SQL ? Vous pouvez exécuter
//先释放缓存 unset($order->user); $order->user;
Requête croisée
Voici la clé indiquer! Comme vous pouvez le voir sur le diagramme de structure de table ci-dessus, la table User et Order_goods ne sont pas directement liées. Ainsi, si nous voulons savoir quels produits l'utilisateur a acheté en fonction des informations de l'utilisateur, nous devons associer les deux tables via la table Order. Alors que faire ? La première est la couche modèle. Parce que nous vérifions en fonction de l'utilisateur, nous accédons à la couche de modèle Utilisateur pour définir l'association.
public function getOrder() { return $this->hasMany(Order::className(), ['user_id' => 'user_id']); } public function getOrderGoods() { return $this->hasMany(OrderGoods::className(), ['order_id' => 'order_id'])-> via('order'); }
Notez ici : getOrderGoods Les deux order_id fait référence au order_id dans la commande associée à getOrder, et le premier order_id fait référence au order_id dans OrderGoods. Mais ! Nous avons également la méthode la plus simple, qui consiste à utiliser des instructions SQL !
$map = 'select user.name, order.id, order_goods.goods_id, goods.goods_name, stock.stock_count from user LEFT JOIN order ON order.user_id = user.user_id LEFT JOIN order_goods ON order_goods.order_id = order.order_id LEFT JOIN goods ON goods.goods_id = order_goods.goods_id LEFT JOIN stock ON stock.goods_id = goods.goods_id'; $list1 = Article::findBySql($map)->asArray()->all();
Résumé
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

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.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

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)

PyCharm est un environnement de développement intégré (IDE) Python très populaire. Il fournit une multitude de fonctions et d'outils pour rendre le développement Python plus efficace et plus pratique. Cet article vous présentera les méthodes de fonctionnement de base de PyCharm et fournira des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à maîtriser l'utilisation de l'outil. 1. Téléchargez et installez PyCharm Tout d'abord, nous devons nous rendre sur le site officiel de PyCharm (https://www.jetbrains.com/pyc

sudo (exécution du superutilisateur) est une commande clé dans les systèmes Linux et Unix qui permet aux utilisateurs ordinaires d'exécuter des commandes spécifiques avec les privilèges root. La fonction de sudo se reflète principalement dans les aspects suivants : Fournir un contrôle des autorisations : sudo réalise un contrôle strict sur les ressources système et les opérations sensibles en autorisant les utilisateurs à obtenir temporairement les autorisations de superutilisateur. Les utilisateurs ordinaires ne peuvent obtenir des privilèges temporaires via sudo qu'en cas de besoin et n'ont pas besoin de se connecter en permanence en tant que superutilisateur. Sécurité améliorée : en utilisant sudo, vous pouvez éviter d'utiliser le compte root lors des opérations de routine. L'utilisation du compte root pour toutes les opérations peut entraîner des dommages inattendus au système, car toute opération incorrecte ou imprudente bénéficiera de toutes les autorisations. et

Étapes de fonctionnement et précautions de LinuxDeploy LinuxDeploy est un outil puissant qui peut aider les utilisateurs à déployer rapidement diverses distributions Linux sur des appareils Android, permettant aux utilisateurs de découvrir un système Linux complet sur leurs appareils mobiles. Cet article présentera en détail les étapes de fonctionnement et les précautions de LinuxDeploy et fournira des exemples de code spécifiques pour aider les lecteurs à mieux utiliser cet outil. Étapes de l'opération : Installer LinuxDeploy : Tout d'abord, installez

Vraisemblablement, de nombreux utilisateurs ont plusieurs ordinateurs inutilisés à la maison et ont complètement oublié le mot de passe de mise sous tension car ils n'ont pas été utilisés depuis longtemps. Ils aimeraient donc savoir quoi faire s'ils oublient le mot de passe ? Alors jetons un coup d’œil ensemble. Que faire si vous oubliez d'appuyer sur F2 pour le mot de passe de démarrage Win10 ? 1. Appuyez sur le bouton d'alimentation de l'ordinateur, puis appuyez sur F2 lorsque vous allumez l'ordinateur (différentes marques d'ordinateurs ont des boutons différents pour accéder au BIOS). 2. Dans l'interface du BIOS, recherchez l'option de sécurité (l'emplacement peut être différent selon les marques d'ordinateurs). Habituellement dans le menu des paramètres en haut. 3. Recherchez ensuite l’option SupervisorPassword et cliquez dessus. 4. À ce stade, l'utilisateur peut voir son mot de passe, et en même temps trouver Activé à côté et le basculer sur Dis.

Avec la popularité des smartphones, la fonction capture d’écran est devenue l’une des compétences essentielles pour l’utilisation quotidienne des téléphones portables. En tant que l'un des téléphones mobiles phares de Huawei, la fonction de capture d'écran du Huawei Mate60Pro a naturellement attiré beaucoup d'attention de la part des utilisateurs. Aujourd'hui, nous partagerons les étapes de capture d'écran du téléphone mobile Huawei Mate60Pro, afin que tout le monde puisse prendre des captures d'écran plus facilement. Tout d'abord, le téléphone mobile Huawei Mate60Pro propose une variété de méthodes de capture d'écran et vous pouvez choisir la méthode qui vous convient en fonction de vos habitudes personnelles. Ce qui suit est une introduction détaillée à plusieurs interceptions couramment utilisées :

Apple a apporté certaines fonctionnalités matérielles exclusives aux iPhone 15 Pro et 15 Pro Max, ce qui a attiré l’attention de tous. Nous parlons de montures en titane, de designs élégants, du nouveau chipset A17 Pro, d'un téléobjectif 5x passionnant, et bien plus encore. Parmi toutes les cloches et sifflets ajoutés aux modèles d’iPhone 15 Pro, le bouton d’action reste une fonctionnalité importante et importante. Inutile de dire que c'est un complément utile pour lancer des actions sur votre iPhone. Cela dit, vous pourriez accidentellement maintenir le bouton Action enfoncé et déclencher la fonctionnalité par inadvertance. Franchement, c'est énervant. Pour éviter cela, vous devez désactiver le bouton d'action sur les iPhone 15 Pro et 15 Pro Max. laisser

L'iPhone 15 Pro et l'iPhone 15 Pro Max d'Apple introduisent un nouveau bouton d'action programmable qui remplace le traditionnel interrupteur sonnerie/silencieux au-dessus des boutons de volume. Lisez la suite pour savoir à quoi sert le bouton Action et comment le personnaliser. Un nouveau bouton d'action sur les modèles Apple iPhone 15 Pro remplace le commutateur iPhone traditionnel qui active Ring et Silent. Par défaut, le nouveau bouton activera toujours les deux fonctions avec un appui long, mais vous pouvez également appuyer longuement pour exécuter une gamme d'autres fonctions, notamment un accès rapide à l'appareil photo ou à la lampe de poche, l'activation des mémos vocaux, le mode de mise au point, la traduction et fonctionnalités d'accessibilité telles que la loupe. Vous pouvez également l'associer à un seul raccourci, ouvrant ainsi une tonne d'autres possibilités.

Surveillance du défilement des pages Web CSS : surveillez les événements de défilement des pages Web et effectuez les opérations correspondantes. Avec le développement continu de la technologie frontale, les effets et les interactions des pages Web deviennent de plus en plus riches et diversifiés. Parmi eux, la surveillance du défilement est une technologie courante qui peut effectuer certains effets spéciaux ou opérations basés sur la position de défilement lorsque l'utilisateur fait défiler la page Web. D'une manière générale, la surveillance du défilement peut être implémentée via JavaScript. Cependant, dans certains cas, nous pouvons également obtenir l'effet de surveillance du défilement via du CSS pur. Cet article présentera comment implémenter le défilement des pages Web via CSS
