| | User::find()->all(); 此方法返回所有数据; | | | | User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子); | | | | User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据; | | | | User::find()->where(['name' => '小伙儿'])->all(); 此方法返回 ['name' => '小伙儿'] 的所有数据; | | | | User::find()->orderBy('id DESC')->all(); 此方法是排序查询; | | | | User::findBySql('SELECT * FROM user')->all(); 此方法是用 sql 语句查询 user 表里面的所有数据; | | | | User::findBySql('SELECT * FROM user')->one(); 此方法是用 sql 语句查询 user 表里面的一条数据; | | | | User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id'); 统计符合条件的总条数; | | | | User::find()->andFilterWhere(['like', 'name', '小伙儿']); 此方法是用 like 查询 name 等于 小伙儿的 数据 | | | | User::find()->one(); 此方法返回一条数据; | | | | User::find()->all(); 此方法返回所有数据; | | | | User::find()->count(); 此方法返回记录的数量; | | | | User::find()->average(); 此方法返回指定列的平均值; | | | | User::find()->min(); 此方法返回指定列的最小值 ; | | | | User::find()->max(); 此方法返回指定列的最大值 ; | | | | User::find()->scalar(); 此方法返回值的第一行第一列的查询结果; | | | | User::find()->column(); 此方法返回查询结果中的第一列的值; | | | | User::find()->exists(); 此方法返回一个值指示是否包含查询结果的数据行; | | | | User::find()->batch(10); 每次取 10 条数据 | | | | User::find()->each(10); 每次取 10 条数据, 迭代查询 | | | | | | Customer::model()->findAllBySql("select * from customer where name = test"); | | | | | | Customer::model()->findByPk(1); | | | | | | Customer::model()->findAllByAttributes(['username'=>'admin']); | | | | | | $subQuery = (new Query())->select('COUNT(*)')->from('customer'); | | | | $query = (new Query())->select(['id', 'count' => $subQuery])->from('customer'); | | | | | | $data = (new Query()) | | ->select('*') | | ->from('customer') | | ->join('LEFT JOIN','orders','customer.id = orders.customer_id') | | ->where(['status'=>'1','customer.id'=>'1']) | | ->offset(5) | | ->limit(10) | | ->all() |
|
| | | | $sql= "SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id"; | | $rows=Yii::$app->db->createCommand($sql)->query(); | | | | 查询返回多行: | | $command = Yii::$app->db->createCommand('SELECT * FROM post'); | | $posts = $command->queryAll(); | | | | 返回单行 | | $command = Yii::$app->db->createCommand('SELECT * FROM post WHERE id=1'); | | $post = $command->queryOne(); | | | | 查询多行单值: | | $command = Yii::$app->db->createCommand('SELECT title FROM post'); | | $titles = $command->queryColumn(); | | | | 查询标量值/计算值: | | $command = Yii::$app->db->createCommand('SELECT COUNT(*) FROM post'); | | $postCount = $command->queryScalar(); |
|
| | | | | | | | | | | | | | | | Class CustomerModel extends \yii\db\ActiveRecord | | { | | ... | | | | | | | | public function getOrders() | | { | | return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']); | | } | | | | | | public function getCountry() | | { | | return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']); | | } | | .... | | } | | | | | | CustomerModel::find()->with('orders', 'country')->all(); | | | | | | CustomerModel::find()->with('orders.address')->all(); | | | | | | CustomerModel::find()->with([ | | 'orders' => function ($query) { | | $query->andWhere('status = 1'); | | }, | | 'country', | | ])->all(); |
|
其他查询方法
| | | | \Yii::$app->db->createCommand('SELECT * FROM test')->queryOne(); | | | | | | \Yii::$app->db->createCommand('SELECT * FROM test')->queryAll(); | | | | | | \Yii::$app->db->createCommand('SELECT * FROM test WHERE id=:id')->bindValue(':id',5)->queryOne(); | | | | | | \Yii::$app->db->createCommand('SELECT * FROM test WHERE id=:id AND name=:name')->bindValues([':id'=>3,':name'=>'Tom'])->queryOne(); | | | | | | \Yii::$app->db->createCommand('SELECT COUNT("id") FROM test')->queryScalar(); | | | | | | | | $row = (new \yii\db\Query()) | | ->select('*') | | ->from('test') | | ->where('id=:id', [':id'=>6]) | | ->one(); | | | | | | $rows = (new \yii\db\Query()) | | ->select('id,name') | | ->from('test') | | ->where(['>','id', 2]) | | ->andWhere('class=:class', [':class'=>'A']) | | ->all(); | | | | | | $count = (new \yii\db\Query()) | | ->select('count(id)') | | ->from('test') | | ->where('class=:class', [':class'=>'B']) | | ->count(); | | | | | | $join = (new \yii\db\Query()) | | ->from('student s') | | ->select('s.*,t.id t_id,t.name t_name') | | ->leftJoin('teacher t','s.class = t.class') | | ->where('t.id=:t_id', [':t_id' => '2']) | | ->offset(3) | | ->limit(2) | | ->all(); | | | | | | $row = Test::find()->where('id=:id',[':id'=>5])->asArray()->one(); | | | | | | $rows = Test::find()->where('id>:id and class=:class',[':id'=>12,':class'=>'C'])->asArray()->all(); | | | | | | $count = Test::find()->count(); |
|
增加数据
| | | | \Yii::$app->db->createCommand()->insert('test',['name'=>'James','age'=>'22'])->execute(); | | | | | | \Yii::$app->db->createCommand()->batchInsert('test',['name','age'],[ | | ['Hong','33'], | | ['Wei','44'] | | ])->execute(); | | | | | | $add = new Test(); | | $add->name = 'Xing'; | | $add->class = 'B'; | | $add->save(); |
|
修改数据
| | \Yii::$app->db->createCommand()->update('test',['name'=>'Li'],'id=:id and class=:class',[':id'=>1,':class'=>'E'])->execute(); | | | | | | $update = Test::find()->where('id=:id',[':id'=>6])->one(); | | $update->score = 100; | | $update->save(); | | | | | | $updateAll = Test::updateAll(['name'=>'Ping'],'id=:id',[':id'=>10]); | | $updateAll = Test::updateAll(['is_del'=>1],['in','id',['101','102','103']]); | | | | | | $update = Test::findOne(['id'=>1]); | | $update->is_del = 1; | | $update->num += 1; | | $update->save(); |
|
删除数据
| | \Yii::$app->db->createCommand()->delete('test','id>:id',[':id'=>6])->execute(); | | | | | | $del = Test::find()->where('id=:id',[':id'=>6])->one();$del->delete(); | | | | Test::deleteAll('id>:id', [':id' => 29]); |
|