您好,欢迎访问一九零五行业门户网

Yii2数据库查询有关的操作

注:下文所说的article为model
use app\models\article;
本文中的dd()函数,为我自己自定义的函数
function dd($var){ echo ; var_dump($var); echo
; die;}
1:防止sql注入,用站位符的方式
$request=yii::$app->request;$id=$request->get('id');$sql=select * from article where id=:id;$r=article::findbysql($sql,[':id'=>$id])->all();
2:数据库查询操作
获取全部数据$data=article::find()->all();查询单条数据id=5$data=article::find()->where(['id'=>'5'])->all();id>3的数据$data=article::find()->where(['>','id',3])->all();id>2,idwhere(['between','id',2,5])->all();title like 111$data=article::find()->where(['like','title',111])->all();查询单条数据id=5 one()方法返回的是个对象,all()方法返回的是个大数组里面为对象$data=article::find()->where(['id'=>'5'])->one();查询一条数据 id=5的,因为id为主键$data=article::findone(5);查询多条数据 id=3,4,5的,因为id为主键$data=article::findall([3,4,5]);dd($data);
3:大数据查询省内存处理
从数据库取出来的是一个个的对象,为了节省内存常常需要用asarray()方法转换成为数组。
$data=article::find()->asarray()->all();
打印结果例如:
如果取的数据特别多,比如一下取出1000条数据,如果都以对象的方式,会特别耗费内存,yii给提供的方式,就是通过batch()方法,指定每次查询几条,分多次查询,比如1000条数据,先查询前100条,然后存入一个数组中,再查询100条,再存入该数组,分10次取出,就相当于只占了100条的内存。每100个一组。
两条两条的取,输出结果为2-2-1-
foreach(article::find()->batch(2) as $article){ echo count($article),'-';}
foreach(article::find()->batch(2) as $article){ $data[] = $article;}
打印$data的结果为:
以上就介绍了 yii2数据库查询有关的操作,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息