Maison >développement back-end >tutoriel php >À propos de la requête de modèle Yii basée sur un tableau et un objet
Cet article présente principalement les techniques de requête de modèle de Yii basées sur des tableaux et des objets, et analyse en détail les techniques de requête de modèle de Yii pour les tableaux et les objets à partir d'exemples. Les amis dans le besoin peuvent s'y référer
Cet article décrit les techniques de requête de modèle de Yii. modéliser des techniques de requête basées sur des tableaux et des objets avec des exemples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Pour une publication modèle, il existe les 4 méthodes de requête suivantes, qui renvoient des objets ou des tableaux d'objets.
//查找满足指定条件的结果中的第一行 find the first row satisfying the specified condition $post=Post::model()->find($condition,$params); //查找具有指定主键值的那一行 find the row with the specified primary key $post=Post::model()->findByPk($postID,$condition,$params); //查找具有指定属性值的行 find the row with the specified attribute values $post=Post::model()->findByAttributes($attributes,$condition,$params);//未找到返回null //通过指定的SQL 语句查找结果中的第一行 find the first row using the specified SQL statement $post=Post::model()->findBySql($sql,$params);
Si la méthode find trouve une ligne qui répond aux conditions de requête, elle renverra une instance Post dont les attributs contiennent les valeurs des colonnes correspondantes dans la ligne du tableau de données. Ensuite, nous pouvons lire la valeur chargée tout comme les propriétés d'un objet normal, tel que echo $post->title;. La méthode find renverra null si rien n'est trouvé dans la base de données en utilisant les critères de requête donnés.
Lors de l'appel de find, nous utilisons $condition et $params pour spécifier les conditions de la requête. Ici, $condition peut être une chaîne WHERE dans l'instruction SQL et $params est un tableau de paramètres dont les valeurs doivent être liées aux espaces réservés dans $condation. Par exemple : supposons que nous interrogeons les données avec postID = 10
// find the row with postID=10 $post=Post::model()->find('postID=:postID', array(':postID'=>10));
La condition $condition est la partie Where de notre SQL. Qu'en est-il des paramètres ? Ils sont transmis via les paramètres, mais le nom est ajouté avec. " : ".
YII a une classe CDbCriteria pour construire des requêtes. Si nous interrogeons un titre avec un postId de 10, CdbCriteria est construit comme ceci
$criteria=new CDbCriteria; $criteria->select='title'; // only select the 'title' column $criteria->condition='postID=:postID'; $criteria->params=array(':postID'=>10); $post=Post::model()->find($criteria); // $params is not needed
Une alternative à CDbCriteria est de passer a au trouver un tableau de méthodes. Les clés et valeurs du tableau correspondent respectivement aux noms d'attributs et aux valeurs du critère. L'exemple ci-dessus peut être réécrit comme suit :
$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>10), ));
Bien entendu, il s'applique également à findAll(. )
self::$_items[$type]=array(); $models=self::model()->findAll(array( 'condition'=>'type=:type', 'params'=>array(':type'=>$type), 'order'=>'position', ));
Lorsqu'une condition de requête consiste à faire correspondre plusieurs colonnes par des valeurs spécifiées, nous pouvons utiliser findByAttributes(). Nous faisons du paramètre $attributes un tableau de valeurs indexées par nom de colonne.
$attributes dans findByAttributes est le nom du champ Comment demander si le titre est abc ? Voir ci-dessous
Post::model()->findByAttributes(array('title'=>'abc'))
Autres méthodes :
1. $admin=Admin::model()->findAll($condition,$params );
Cette méthode consiste à interroger une collection en fonction d'une condition, telle que :
findAll("username=:name",array(":name"=>$username));
2 $admin=Admin::model()-. >findAllByPk ($postIDs,$condition,$params);
findAllByPk($id,"name like ':name' et age=:age" ,array(':name'=>$name ,'age '=>$age));
Cette méthode consiste à interroger une collection en fonction de la clé primaire. Plusieurs clés primaires peuvent être utilisées, telles que :
findAllByPk(array(1,2));
3. $admin=Admin::model ()->findAllByAttributes($attributes,$condition,$params);
Cette méthode consiste à interroger une collection en fonction de conditions, qui peuvent être multiples conditions. Placez les conditions dans un tableau, tel que :
findAllByAttributes(array('username'=>'admin'));
4. $admin=Admin::model()->findAllBySql($sql,$params);
Cette méthode est basée sur l'instruction SQL Interroger un tableau, tel que :
findAllBySql("select *from admin where username=:name",array(':name'=>'admin'));
2. Méthode d'objet de requête
1. $admin=Admin::model()-> ;findByPk($postID,$condition,$params);
Interrogez un objet basé sur la clé primaire, tel que :
findByPk(1);
2. $row=Admin : :model()->find($condition,$params);
Interroger un ensemble de données en fonction d'une condition , il peut y en avoir plusieurs, mais il ne renvoie que la première ligne de données, telle que :
find('username=:name',array(':name'=>'admin'));
3 $admin=Admin::model()->findByAttributes($attributes, $condition,$params);
Cette méthode consiste à interroger un ensemble de données basées sur des conditions, qui peuvent être plusieurs conditions. Mettez les conditions dans le tableau, et elle interrogera également le premier élément de. données, telles que :
findByAttributes(array('username'=>'admin'));
4. $admin=Admin: :model()->findBySql($sql,$params);
Ceci La méthode interroge un ensemble de données basé sur l'instruction SQL, et elle interroge également le premier élément de données, tel que :
findBySql("select *from admin where username=:name",array(':name'=>'admin'));
5. Mettez en place une méthode pour obtenir SQL et interrogez un objet basé sur find
$criteria=new CDbCriteria; $criteria->select='username'; // only select the 'title' column $criteria->condition='username=:username'; $criteria->params=array(':username=>'admin'); $post=Post::model()->find($criteria); // $params is not needed
3. Recherchez le numéro et déterminez si la requête a un résultat
1 $n=Post : :model()->count($condition,$params);
Cette méthode est basée sur une requête conditionnelle combien d'enregistrements il y a dans une collection et renvoie un nombre entier, tel que
count("username=:name",array(":name"=>$username));
2. $n=Post::model()->countBySql($sql,$params) ;
Cette méthode consiste à demander combien les enregistrements se trouvent dans une collection basée sur l'instruction SQL et renvoient un nombre entier, tel que
countBySql("select *from admin where username=:name",array(':name'=>'admin'));
3 $exists=Post: :model()->exists($condition, $params);
Cette méthode consiste à demander si le tableau obtenu contient des données selon une condition. S'il y a des données, elle renvoie vrai, sinon elle n'est pas trouvée
4 . Méthode d'ajout
$admin=new Admin; $admin->username=$username; $admin->password=$password; if($admin->save()>0){ echo "添加成功"; }else{ echo "添加失败"; }
5. Méthode de modification
1. $condition,$params);
$count = Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1')); if($count>0){ echo "修改成功"; }else{ echo "修改失败"; }
2. Post::model()->updateByPk($pk,$attributes, $condition,$params);
$count = Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin')); $count = Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin')); if($count>0){ echo "修改成功"; }else{ echo "修改失败"; }
$pk代表主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值
3、Post::model()->updateCounters($counters,$condition,$params);
$count =Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin')); if($count>0){ echo "修改成功"; }else{ echo "修改失败"; }
array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1
六、删除的方法
1、Post::model()->deleteAll($condition,$params);
$count = Admin::model()->deleteAll('username=:name and password=:pass',array(':name'=>'admin',':pass'=>'admin')); $id=1,2,3 deleteAll('id in(".$id.")');删除id为这些的数据 if($count>0){ echo "删除成功"; }else{ echo "删除失败"; }
2、Post::model()->deleteByPk($pk,$condition,$params);
$count = Admin::model()->deleteByPk(1); $count = Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin')); if($count>0){ echo "删除成功"; }else{ echo "删除失败"; }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
关于Yii Framework框架获取分类下面的所有子类的方法
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!