Maison  >  Article  >  cadre php  >  Comment utiliser yii2 hasone

Comment utiliser yii2 hasone

(*-*)浩
(*-*)浩original
2019-11-07 09:57:563935parcourir

Il existe deux types d'associations entre tables dans Yii2, qui sont utilisées pour spécifier l'association entre deux modèles.

Comment utiliser yii2 hasone

Un-à-plusieurs : hasMany

Un-à-un : hasOne (apprentissage recommandé : tutoriel yii )

Résultats de retour : Les résultats de retour de ces deux méthodes sont des objets yiidbActiveQuery

Le premier paramètre : le nom de classe du modèle associé.

Le deuxième paramètre : est un tableau, où les clés sont les attributs du modèle associé et les valeurs sont les attributs du modèle actuel.

Utilisation de l'association

Maintenant, nous obtenons toutes les informations de commande d'un client

$customer = Customer::findOne(1);  
$orders = $customer->orders; // 通过在Customer中定义的关联方法(getOrders())来获取这个客户的所有的订单。

Les deux lignes de code ci-dessus généreront l'instruction SQL suivante

SELECT * FROM customer WHERE id=1;  
SELECT * FROM order WHERE customer_id=1;

Mise en cache des résultats de l'association

Si la commande du client change, nous l'appelons à nouveau

$orders = $customer->orders;

Lorsque vous recevrez à nouveau la commande, vous constaterez que il n'y a aucun changement. La raison en est que la base de données ne sera interrogée que lorsque $customer->orders est exécuté pour la première fois, et les résultats seront mis en cache et SQL ne sera pas exécuté lors des requêtes suivantes.

Et si je veux réexécuter SQL ? Vous pouvez exécuter

unset($customer->orders);  
$customer->orders;

puis récupérer des données de la base de données.

Description du code :

// 执行sql语句: SELECT * FROM customer WHERE id=1  
$customer = Customer::findOne(1);  
//执行sql:SELECT * FROM order WHERE customer_id=1  
$orders1 = $customer->orders;  
//这个不会执行sql,直接使用上面的缓存结果  
$orders2 = $customer->orders;
//如果中间的用户订单有变化,我们就不能从缓存中获取,要unset掉
unset($customer->orders);  
$orders2 = $customer->orders;

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn