数据库查询——Yii2框架(Ⅱ)

ActiveRecord 对数据库 查询的一些简单的操作

0x00 直接查询

User::find()->all();    此方法返回所有数据;

User::findOne($id);   此方法返回 主键 id=1  的一条数据; 

User::find()->where(['name' => $name])->one();   此方法返回 ['name' =>  $name] 的一条数据;

User::find()->where(['name' =>  $name])->all();   此方法返回 ['name' =>  $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',  $name]); 此方法是用 like 查询 name 等于  $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 条数据, 迭代查询

0x01关联查询

1.设计好关联关系(Customer 表 model 文件为例)

public function getOrders()
{
/**
* 第一个参数为要关联的字表模型类名称,
*第二个参数指定 通过子表的 customer_id 去关联主表的 id 字段
*/
return $this->hasMany(Order::className(), ['customer_id' => 'id']);
 }
2、在控制器里面调用
$orders = Customer::find()->joinWith('orders')->where(['customer.id' => '1'])->all();

注: yii2.0 里面,关联关系要用 get 开头的函数,例如 public function getOrders() 函数, 在调用的时候,我们去掉get 只写 get 后面的那个单词或者是字母即可。

参考:
1.http://www.yiichina.com/tutorial/95
2.http://www.yiichina.com/tutorial/96
3.http://www.yiichina.com/doc/guide/2.0/db-active-record

Updated At: Author:xmsec
Chief Water dispenser Manager of Lancet, delivering but striving.
Github
comments powered by Disqus