Yii2 中QueryInterface类库的几项常用where操作 如:like/in等
PHP /
2015-09-21 /
阅读: 137
Yii2中已经内置了多种数据库CRUD的操作,有些很方便,而且也比较安全,例如,我们常用的数据库in查找,PDO并不能使用占位符这种防注入的功能,但是Yii2的一些方法已经帮我们过滤了这些危险的注入漏洞。总结一些常用的where()方法。
// 大致语句如下,我们主要就是演示一下where()中的参数 $customers = Customer::find() ->where(['status' => Customer::STATUS_ACTIVE]) ->orderBy('id') ->all(); // 注释部分就是我们通常使用的SQL语句 ['and', 'id=1', 'id=2'] // id=1 AND id=2 ['and', 'type=1', ['or', 'id=1', 'id=2']] // type=1 AND (id=1 OR id=2) ['in', 'id', [1, 2, 3]] // id IN (1, 2, 3) ['between', 'id', 1, 10] // id BETWEEN 1 AND 10 ['not', ['attribute' => null]] // NOT (attribute IS NULL) ['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]] //(type IN (7, 8, 9) OR (id IN (1, 2, 3))) ['like', 'name', 'tester'] // name LIKE '%tester%' ['like', 'name', ['test', 'sample']] // name LIKE '%test%' AND name LIKE '%sample%' ['like', 'name', '%tester', false] // name LIKE '%tester' ['exists', (new Query())->select('id')->from('users')->where(['active' => 1])] // EXISTS (SELECT "id" FROM "users" WHERE "active"=1) ['>=', 'id', 10] // id >= 10 // 还有 andWhere() 类似于 AND 查找 常用语两个复杂条件的并列或者追加条件 $query->where(['status' => 1]); if(isset($keyword)){ $query->andWhere(['in', 'id', [1, 2, 3]]); } // orWhere() 类似于 OR 查找 使用方法同andWhere()