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