この記事では、主に配列とオブジェクトに基づく Yii のモデル クエリ手法を紹介します。サンプル フォームに基づいて Yii のモデル クエリ手法を詳細に分析します。
サンプル フォームを参照してください。この記事では、Yii の配列ベースおよびオブジェクトベースのモデルクエリ手法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
モデル ポストの場合、オブジェクトまたはオブジェクト配列を返す次の 4 つのクエリ メソッドがあります。
//查找满足指定条件的结果中的第一行 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);
find メソッドがクエリ条件を満たす行を見つけた場合、属性にデータ テーブル行の対応する列の値が含まれる Post インスタンスを返します。その後、通常のオブジェクト プロパティ (echo $post->title; など) と同様に、ロードされた値を読み取ることができます。指定されたクエリ基準を使用してもデータベース内で何も見つからない場合、find メソッドは null を返します。
find を呼び出すときは、$condition と $params を使用してクエリ条件を指定します。ここで、$condition は SQL ステートメント内の WHERE 文字列にすることができ、$params は $condation 内のプレースホルダーに値をバインドする必要があるパラメーターの配列です。例: postID = 10
// find the row with postID=10 $post=Post::model()->find('postID=:postID', array(':postID'=>10));
でデータをクエリするとします。条件 $condition は SQL の where 部分です。パラメータは params を介して渡されますが、名前は ":" で追加されます。 」。
YII には、クエリを構築するための CDbCriteria クラスがあります。postId 10 でタイトルをクエリすると、CdbCriteria は次のように構築されます。
$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
CDbCriteria の代わりに、配列を検索に渡すこともできます。方法。配列のキーと値は、それぞれ条件の属性名と値に対応します。上記の例は次のように書き換えることができます。
$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>10), ));
もちろん、findAll()## にも適用されます。 #
self::$_items[$type]=array(); $models=self::model()->findAll(array( 'condition'=>'type=:type', 'params'=>array(':type'=>$type), 'order'=>'position', ));
$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 like ':name' and 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);
このメソッドfindAllBySql("select *from admin where username=:name",array(':name'=>'admin'));
2 のような SQL ステートメントに基づいて配列をクエリすることです。$admin=Admin:: model()->findByPk($postID,$condition,$ params);
主キーに基づいてオブジェクトをクエリします。例:findByPk(1);
find('username=:name',array(':name'=>'admin'));
findByAttributes(array('username'=>'admin'));
findBySql("select *from admin where username=:name",array(':name'=>'admin'));
$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. 数値をクエリし、クエリの結果があるかどうかを判断します。
1, $n=Post: :model()->count($condition,$params);
このメソッドは、条件に基づいてコレクション内のレコード数をクエリし、count("username=:name",array(":name"=>$username));
countBySql("select *from admin where username=:name",array(':name'=>'admin'));
このメソッドは、条件付きクエリに基づいています。取得した配列にデータがあるかどうかを確認します。データがある場合は 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 "删除失败"; }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
关于Yii Framework框架获取分类下面的所有子类的方法
以上が配列とオブジェクトに基づく Yii モデルクエリについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。