在yii2中使用不相等的条件和findAll()

时间:2017-03-07 09:42:43

标签: yii2 yii2-advanced-app yii2-model

我正在尝试使用以下代码从表中提取记录

document.cookie = "coolName"+ "=" +"coolValue"+ ";" + "expires="+ new Date(new Date().getTime()+60*60*1000*24).toGMTString()+";path=/";

这将输出这样的查询

$userId = Yii::$app->user->id;
$lists = PromoLists::findAll(['user_id' => $userId, 'list_type' => 'custom']);

但我无法在文档中找到任何可以帮助我实现以下条件的内容。

select * from promo_lists where user_id ='$userId' and list_type='custom'

因为状态是select * from promo_lists where user_id ='$userId' and list_type='custom' and status!='deleted' 字段,并且有4种不同的状态

ENUM

目前我使用了以下方法

'active','pending','rejected','deleted'

输出以下查询

PromoLists::findAll(['user_id' => $userId, 'list_type' => 'custom', 'status'=>['active','pending','rejected']]);

以某种方式实现相同的目的,但每次有新的状态类型添加到表格列select * from promo_lists where user_id ='$userId' and list_type='custom' and status in ('active','pending','rejected') 时,都需要编辑此查询。

我知道我可以使用status

来做到这一点

但如何使用PromoLists::find()->where()->andWhere()->all()!= / <>运营商核对。

2 个答案:

答案 0 :(得分:2)

就像这样:

PromoLists::find()->where(['and',
    [
        'user_id' => $userId, 
        'list_type' => 'custom',
    ],
    ['<>', 'status', 'deleted'],
])->all();

答案 1 :(得分:1)

在条件

中使用运算符格式

http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html#operator-format

PromoLists::find()
    ->andWhere([
        'user_id' => $userId,
        'list_type' => 'custom',
        ['!=', 'status', 'deleted']
    ])
    ->all();