栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Yii2.0框架数据库查询总结

Yii2.0框架数据库查询总结

基础查询
User::find()->all();    // 返回所有数据;
 
User::findOne($id);   // 返回 主键 id 为定值 的一条数据;

User::find()->select(['id', 'name'])->one();      // 返回 字段为id和name 的一条数据;
User::find()->select('id,name')->one();      // 返回 字段为id和name 的一条数据;

User::find()->select(['id', 'name'])->all();      // 返回 字段为id和name 的所有数据;
 
User::find()->where(['age' => '18'])->one();      // 返回 ['age' => '18'] 的一条数据;
User::find()->where(['=', 'age', '18'])->one();   // 返回 ['age' => '18'] 的一条数据;
 
User::find()->where(['age' => '18'])->all();   // 返回 ['age' => '18'] 的所有数据;

User::find()->where(['in', 'age', ['18', '19']])->all();   // 返回 age 在18和19 的所有数据;
User::find()->where(['age'=>['18', '19']])->all();   // 返回 age 在18和19 的所有数据;
 
User::find()->orderBy('id DESC')->all();   // 排序查询, DESC:降序,ASC:升序;

User::find()->groupBy('type')->all();   // 根据 type 分组查询 的所有数据;
 
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 LIKE '%腾哥%'

User::find()->andFilterWhere(['like', 'name', '%腾哥', false]); // 用 like 查询数据,生成 name LIKE '%腾哥'

User::find()->andFilterWhere(['like', 'name', '腾哥%', false]); // 用 like 查询数据,生成 name LIKE '腾哥%'
 
User::find()->one();    // 返回一条数据;
 
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 条数据, 迭代查询
直接查询
$sql = "SELECt u.account,i.* FROM 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();
参数绑定
$post = Yii::$app->db->createCommand('SELECt * FROM post WHERe id=:id AND status=:status')
           ->bindValue(':id', $_GET['id'])
           ->bindValue(':status', 1)
           ->queryOne();
 
$params = [':id' => $_GET['id'], ':status' => 1];
 
$post = Yii::$app->db->createCommand('SELECt * FROM post WHERe id=:id AND status=:status')
           ->bindValues($params)
           ->queryOne();
            
$post = Yii::$app->db->createCommand('SELECt * FROM post WHERe id=:id AND status=:status', $params)
执行非查询语句
// INSERT (table name, column values)
Yii::$app->db->createCommand()->insert('user', [
    'name' => 'Sam',
    'age' => 30,
])->execute();
 
// UPDATE (table name, column values, condition)
Yii::$app->db->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
 
// DELETE (table name, condition)
Yii::$app->db->createCommand()->delete('user', 'status = 0')->execute();
 
// table name, column names, column values
Yii::$app->db->createCommand()->batchInsert('user', ['name', 'age'], [
    ['Tom', 30],
    ['Jane', 20],
    ['Linda', 25],
])->execute();
执行事务
$db = Yii::$app->db;
$transaction = $db->beginTransaction();
 
try {
    $db->createCommand($sql1)->execute();
    $db->createCommand($sql2)->execute();
    // ... executing other SQL statements ...
     
    $transaction->commit();
     
} catch(Exception $e) {
 
    $transaction->rollBack();
     
    throw $e;
}
关联查询
    
Class CustomerModel extends yiidbActiveRecord
{
    ...
    //客户和订单是一对多的关系所以用hasMany
    //此处OrdersModel在CustomerModel顶部别忘了加对应的命名空间
    //id对应的是OrdersModel的id字段,order_id对应CustomerModel的order_id字段
    public function getOrders()
    {
        return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']);
    }
     
    //客户和国家是一对一的关系所以用hasOne
    public function getCountry()
    {
        return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']);
    }
    ....
}
       
// 查询客户与他们的订单和国家
CustomerModel::find()->with('orders', 'country')->all();
// 查询客户与他们的订单和订单的发货地址(注:orders 与 address都是关联关系)
CustomerModel::find()->with('orders.address')->all();
// 查询客户与他们的国家和状态为1的订单
CustomerModel::find()->with([
    'orders' => function ($query) {
        $query->andWhere('status = 1');
        },
        'country',
])->all();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327416.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号