この記事では、Yii の配列ベースおよびオブジェクトベースのモデルクエリ手法を例とともに説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
モデルポストの場合、オブジェクトまたはオブジェクト配列を返す次の 4 つのクエリ メソッドがあります。
リーリーfind メソッドがクエリ条件を満たす行を見つけた場合、属性にデータ テーブル行の対応する列の値が含まれる Post インスタンスを返します。その後、通常のオブジェクトのプロパティと同様に、ロードされた値を読み取ることができます (echo $post->title; など)。指定されたクエリ基準を使用してもデータベース内で何も見つからない場合、find メソッドは null を返します。
find を呼び出すときは、$condition と $params を使用してクエリ条件を指定します。ここで、$condition は SQL ステートメント内の WHERE 文字列にすることができ、$params は $condation 内のプレースホルダーに値をバインドする必要があるパラメーターの配列です。例: postID = 10 でデータをクエリするとします
リーリー条件 $condition は SQL の where 部分です。パラメータは params を介して渡されますが、名前には「:」が追加されます。
YII にはクエリを構築するための CDbCriteria クラスがあります。postId 10 でタイトルをクエリすると、CdbCriteria は次のように構築されます
。 リーリーCDbCriteria の代わりに、配列を find メソッドに渡すこともできます。配列のキーと値はそれぞれ、条件の属性名と値に対応します。上記の例は次のように書き換えることができます。 リーリー
もちろん findAll() にも適用されますリーリー
クエリ条件が指定された値による複数の列の一致に関するものである場合、findByAttributes() を使用できます。 $attributes パラメータを列名でインデックス付けされた値の配列にします。
findByAttributes の $attributes はフィールドの名前です。タイトルが abc かどうかをクエリするにはどうすればよいですか?以下を参照してください
コードをコピーします コードは次のとおりです: Post::model()->findByAttributes(array('title'=>'abc'))
その他の方法:
1. $admin=Admin::model()->findAll($condition,$params);
このメソッドは、次のような条件に基づいてコレクションをクエリします。
コードをコピーします コードは次のとおりです: findAll("username=:name",array(":name"=>$username));
2. $admin=Admin::model()->findAllByPk($postIDs,$condition,$params);
findAllByPk($id,"「:name」と age=:age のような名前" ,array(':name'=>$name,'age'=>$age));
このメソッドは、主キーに基づいてコレクションをクエリします。次のような複数の主キーを使用できます。
コードをコピーします コードは次のとおりです: findAllByPk(array(1,2));
3. $admin=Admin::model()->findAllByAttributes($attributes,$condition,$params);
このメソッドは、条件に基づいてコレクションをクエリします。条件は複数の条件にすることができます。次のように条件を配列に入れます。
コードをコピーします
コードは次のとおりです: findAllByAttributes(array('username'=>'admin'));
4. $admin=Admin::model()->findAllBySql($sql,$params);
このメソッドは、次のような SQL ステートメントに基づいて配列をクエリします。
コードをコピーします
コードは次のとおりです: findAllBySql("select *from admin where username=:name",array(':name'=>'admin'));
2. オブジェクトをクエリする方法
1. $admin=Admin::model()->findByPk($postID,$condition,$params);
主キーに基づいてオブジェクトをクエリします。例:
コードをコピー コードは次のとおりです: findByPk(1);
2. $row=Admin::model()->find($condition,$params);
条件に基づいてデータのセットをクエリします。複数のデータがある可能性がありますが、次のようなデータの最初の行のみが返されます。
コードは次のとおりです: find('username=:name',array(':name'=>'admin'));
3. $admin=Admin::model()->findByAttributes($attributes,$condition,$params);
このメソッドは、条件に基づいてデータのセットをクエリします。条件は複数の条件にすることができます。また、次のような最初のデータもクエリします。
コードをコピーします
コードは次のとおりです: findByAttributes(array('username'=>'admin'));
4. $admin=Admin::model()->findBySql($sql,$params);
このメソッドは、SQL ステートメントに基づいてデータのセットをクエリします。また、次のような最初のデータ部分もクエリします。
コードをコピーします
5. SQLを取得し、findに基づいてオブジェクトをクエリするメソッドを作成します
リーリー
3. 番号をクエリし、クエリの結果があるかどうかを判断します
该方法是根据一个条件查询一个集合有多少条记录,返回一个int型数字,如 该方法是根据SQL语句查询一个集合有多少条记录,返回一个int型数字,如 四、添加的方法 五、修改的方法 1、Post::model()->updateAll($attributes,$condition,$params); 2、Post::model()->updateByPk($pk,$attributes,$condition,$params); $pk代表主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值 3、Post::model()->updateCounters($counters,$condition,$params); array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1 六、删除的方法 1、Post::model()->deleteAll($condition,$params); 2、Post::model()->deleteByPk($pk,$condition,$params); 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
复制代码 代码如下:count("username=:name",array(":name"=>$username));
2、$n=Post::model()->countBySql($sql,$params);
复制代码 代码如下:countBySql("select *from admin where username=:name",array(':name'=>'admin'));
3、$exists=Post::model()->exists($condition,$params);
该方法是根据一个条件查询查询得到的数组有没有数据,如果有数据返回一个true,否则没有找到
$admin=new Admin;
$admin->username=$username;
$admin->password=$password;
if($admin->save()>0){
echo "添加成功";
}else{
echo "添加失败";
}
$count = Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1'));
if($count>0){
echo "修改成功";
}else{
echo "修改失败";
}
$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 "修改失败";
}
$count =Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin'));
if($count>0){
echo "修改成功";
}else{
echo "修改失败";
}
$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 "删除失败";
}
$count = Admin::model()->deleteByPk(1);
$count = Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin'));
if($count>0){
echo "删除成功";
}else{
echo "删除失败";
}
您可能感兴趣的文章: