ホームページ > バックエンド開発 > PHPチュートリアル > 配列とオブジェクトに基づく Yii モデルクエリ手法の詳細な例、yiimodel_PHP チュートリアル

配列とオブジェクトに基づく Yii モデルクエリ手法の詳細な例、yiimodel_PHP チュートリアル

WBOY
リリース: 2016-07-12 09:02:19
オリジナル
699 人が閲覧しました

Yii の配列ベースおよびオブジェクトベースのモデルクエリ手法、yiimodel の詳細な例

この記事では、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 ステートメントに基づいてデータのセットをクエリします。また、次のような最初のデータ部分もクエリします。
コードをコピーします

コードは次のとおりです: findBySql("select *from admin where username=:name",array(':name'=>'admin'));


5. SQLを取得し、findに基づいてオブジェクトをクエリするメソッドを作成します リーリー 3. 番号をクエリし、クエリの結果があるかどうかを判断します

1. $n=Post::model()->count($condition,$params);

该方法是根据一个条件查询一个集合有多少条记录,返回一个int型数字,如
复制代码 代码如下:count("username=:name",array(":name"=>$username));
2、$n=Post::model()->countBySql($sql,$params);

该方法是根据SQL语句查询一个集合有多少条记录,返回一个int型数字,如
复制代码 代码如下: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 "添加失败";
}

ログイン後にコピー

五、修改的方法

1、Post::model()->updateAll($attributes,$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 "删除失败";
}

ログイン後にコピー

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
  • Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
  • YiiFramework入门知识点总结(图文教程)
  • PHP的Yii框架的常用日志操作总结
  • Yii学习总结之数据访问对象 (DAO)
  • Yii学习总结之安装配置
  • YII路径的用法总结
  • Yii使用技巧大汇总

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1085884.htmlTechArticleYii基于数组和对象的Model查询技巧实例详解,yiimodel 本文实例讲述了Yii基于数组和对象的Model查询技巧。分享给大家供大家参考,具体如下:...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート