如果要使用model的方法先给user表生成一个model,就可以方便对此表进行操作了。
首先在数据库中创建好表,然后在项目的访问路径后面加上/gii
例如 test.com/gii
进入页面安装界面提示填写然后提交,项目文件里会多出个刚刚生成的文件,OK。
例子的user表结构
id name mobilephone
1 邢书亮 13199368737
2 王晓天 15174673312
1.model增加
//model的增加操作首先要new一下才能使用。
$user = new User();
$user->id = $id;
$user->name = $name;
$user->mobilephone = $mobile;
$user->save();
//save可用于增加,修改。在new实例化时是增加功能。
2.model查询(model的查询方法有很多,写几个常见的吧。)
//想查询一条记录可以这样:
$user = User::findOne(['id' => 1,mobilephone=>'15174673312']);
//查询user表id为1的一条数据。查询条件简单就可以直接findOne。
$user = User::find()
->select('id,name')
->where(['mobilephone' => '15174673312'])
->one();
//查询到的结果就是一条满足条件的 id,name字段值 “ 1 王晓天 ”。 如果是查询多个条件可以这么写:
$user = User::find()
->where(['mobilephone' => '15174673312'])
->andwhere(['id' => 1])
->one();
//或者这样:
$user = User::find()
->where(['mobilephone' => '15174673312' , id => 1])
->asArray()
->one();
//想要获取所有数据把上面的one()换成all()即可。
补充:
User::find()->one(); //返回一条数据;
User::find()->all(); //返回所有数据;
User::find()->count(); //返回记录的数量;
User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id'); 统计符合条件的总条数;
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 条数据, 迭代查询
3.model修改
//修改使用save不需要实例化直接静态调用即可。
$user = User::find()
->where(['id'=>'1'])
->one(); //获取id等于1的模型
$user->mobilephone= 13333333333; //修改mobilephone属性值
$user->name = '阿尔法'; //修改name的值为阿尔法
.... //修改...属性值
$user->save(); //保存。等同于 $user->update();
4.model删除
$user = User::find()->where(['id'=>'1'])->one();
$user->delete(); //删除id=1的数据
User::deleteAll('name = 王晓天'); 删除 name = 王晓天的数据;
yii遇到的查询条件,比如where or,where 大于
$user = User::find()
->where(['status' => 1, 'type' => 2])
->andwhere(['or',['name' => '张三'], ['name' => '李四']])
->andwhere(['>=', 'age', 21])
->all();
生成的语句是这样:
SELECT * FROM user
WHERE (((status
=1) AND (type
=2)) AND ((name
=‘张三’) OR (name
=‘李四’))) AND (age
>= 21)
排序
$user= User::find()->where(['id' => 1])->orderBy(['create_time' => SORT_DESC])->createCommand()->queryOne();
//也可以这么写:
$user = User::find()->where(['id' => 1])->orderBy('create_time desc')->createCommand()->queryOne();
//上面的语句等于原生sql的 : ‘SELECT * FROM user
WHERE id
=‘1’ ORDER BY create_time
DESC’;
//获取一条id=1,以create_time字段为降序的数据。
//想查看下yii生成的sql语句?输出sql语句用 getRawSql()方法。例:
$sql= User::find()->where(['or',['name' => '张三'], ['name' => '李四']])->createCommand()->getRawSql();
echo $sql; //echo一下 或者 var_dump 搞定。
还有许多的方法以及不同的写法以后记录。