数据库的增删改查操作 [ 未指定版本 ]
查:
1.findBySql
$sql="select * from tablename where condition"
Modelname::findBySql($sql,array(':id'=>1 or 1=1))->all();
//返回一个对象。第二个参数是为了防止sql注入
//findBySql是cactiverecord的方法
2.find
$results=modelname::find()->where(['id'=>1])->all();
查询出id=1的记录
$results=modelname::find()->where(['>','id',0])->all();
查询出id大于0的记录
$results=modelname::find()->where(['between','id',0,3])->all();
查询出id在0,3之间的记录
$results=modelname::find()->where(['like','title','keyword'])->all();
查询出标题中和关键字相符的记录
内存使用量优化方法:
1.查询结果转化成数组
$results=modelname::find()->where(['between','id',0,3])->asArray()->all();
2.减少每次取出数据的数量
foreach(modelname::find->batch(2) as $results){
}
//每次只查询2条记录,降低内存占用
删:先取出对象再调用对象的delete方法
1.
$result=modelname::find()->where(['id'=>1)->all();
$result[0]->delete();
//删除一条数据
modelname::deleteAll('id>:id',array(':id'=>0));
//删除id大于0的数据
增:创建一个cactiverecord对象,调用他的save方法
1.
$test=new modename();
$test->username='summer';
$test->password='123456';
$test->validate(); //调用rule函数验证数据
if($test->hasErrors()){
echo '数据不合法';
die();
}
$test->save();
//往modelname表中插入了了summer,123456的数据,为了安全和数据的合理性,我们通常会在model文件中定义一个rule函数去验证数据
改:
$result=modelname::find()->where(['id'=>1)->all()->one();
$result->username='lily';
$result->save();
数据表的关联查询:
假设有顾客表(id,name)和订单表(id,price,customer_id)两张表;
1.根据顾客查询订单
$customer=customer::find()->where['name'=>'zhangsan']->one();
$order=$customer->hasMany('Order::className',['customer_id'=>'id'])->asArray()->all();
在model中封装:
public function getOrder(){
$order=$this->hasMany('Order::className',['customer_id'=>'id'])->asArray()->all();
return $order;
}
在controller中调用:
$customer=customer::find()->where['name'=>'zhangsan']->one();
$order=$customer->getOrder();
summer914
注册时间:2015-07-22
最后登录:2016-02-22
在线时长:7小时55分
最后登录:2016-02-22
在线时长:7小时55分
- 粉丝26
- 金钱405
- 威望30
- 积分775
共 9 条评论
点赞,但是美女你可以调整下格式么??
就是自己的随记,木有用编辑器,恩,下次我参考下人家的格式
@summer914 我已经帮你编辑好了。
@╃巡洋艦㊣ 多谢,(送花),咋么回复都没表情框,站长要不要考虑升级下,哈哈
嘿嘿
public function getOrder(){ $order=$this->hasMany('Order::className',['customer_id'=>'id'])->asArray(); return $order; }
调用
$customer=customer::find()->where['name'=>'zhangsan']->one(); $order=$customer->order();
赞,简单易懂
多个数据库 读写分离怎么配置呢?
function zan(){ echo '赞'*32; }
function zan(){
echo '赞'*32;
} 为何前面没有 public
666.。。
你的改那里有问题, 少写了一个“】”请注意