日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

yii2 mysql查询_Yii2 数据库查询汇总

發(fā)布時間:2025/3/15 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii2 mysql查询_Yii2 数据库查询汇总 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、基礎(chǔ)查詢

User::find()->all(); 此方法返回所有數(shù)據(jù);

User::findOne($id); 此方法返回 主鍵 id=1 的一條數(shù)據(jù)(舉個例子);

User::find()->where(['name' => '小伙兒'])->one(); 此方法返回 ['name' => '小伙兒'] 的一條數(shù)據(jù);

User::find()->where(['name' => '小伙兒'])->all(); 此方法返回 ['name' => '小伙兒'] 的所有數(shù)據(jù);

User::find()->orderBy('id DESC')->all(); 此方法是排序查詢;

User::findBySql('SELECT * FROM user')->all(); 此方法是用 sql 語句查詢 user 表里面的所有數(shù)據(jù);

User::findBySql('SELECT * FROM user')->one(); 此方法是用 sql 語句查詢 user 表里面的一條數(shù)據(jù);

User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id'); 統(tǒng)計符合條件的總條數(shù);

User::find()->andFilterWhere(['like', 'name', '小伙兒']); 此方法是用 like 查詢 name 等于 小伙兒的 數(shù)據(jù)

User::find()->one(); 此方法返回一條數(shù)據(jù);

User::find()->all(); 此方法返回所有數(shù)據(jù);

User::find()->count(); 此方法返回記錄的數(shù)量;

User::find()->average(); 此方法返回指定列的平均值;

User::find()->min(); 此方法返回指定列的最小值 ;

User::find()->max(); 此方法返回指定列的最大值 ;

User::find()->scalar(); 此方法返回值的第一行第一列的查詢結(jié)果;

User::find()->column(); 此方法返回查詢結(jié)果中的第一列的值;

User::find()->exists(); 此方法返回一個值指示是否包含查詢結(jié)果的數(shù)據(jù)行;

User::find()->batch(10); 每次取 10 條數(shù)據(jù)

User::find()->each(10); 每次取 10 條數(shù)據(jù), 迭代查詢

2、直接查詢

createCommand(執(zhí)行原生的SQL語句)

$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();

2.1、綁定參數(shù)

$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)

->queryOne();

2.2、執(zhí)行非查詢語句

// 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();

2.3、執(zhí)行事務(wù)

$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;

}

3、關(guān)聯(lián)查詢

/**

*客戶表Model:CustomerModel

*訂單表Model:OrdersModel

*國家表Model:CountrysModel

*首先要建立表與表之間的關(guān)系

*在CustomerModel中添加與訂單的關(guān)系

*/

Class CustomerModel extends \yii\db\ActiveRecord

{

...

//客戶和訂單是一對多的關(guān)系所以用hasMany

//此處OrdersModel在CustomerModel頂部別忘了加對應(yīng)的命名空間

//id對應(yīng)的是OrdersModel的id字段,order_id對應(yīng)CustomerModel的order_id字段

public function getOrders()

{

return $this->hasMany(OrdersModel::className(), ['id'=>'order_id']);

}

//客戶和國家是一對一的關(guān)系所以用hasOne

public function getCountry()

{

return $this->hasOne(CountrysModel::className(), ['id'=>'Country_id']);

}

....

}

// 查詢客戶與他們的訂單和國家

CustomerModel::find()->with('orders', 'country')->all();

// 查詢客戶與他們的訂單和訂單的發(fā)貨地址(注:orders 與 address都是關(guān)聯(lián)關(guān)系)

CustomerModel::find()->with('orders.address')->all();

// 查詢客戶與他們的國家和狀態(tài)為1的訂單

CustomerModel::find()->with([

'orders' => function ($query) {

$query->andWhere('status = 1');

},

'country',

])->all();

總結(jié)

以上是生活随笔為你收集整理的yii2 mysql查询_Yii2 数据库查询汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。