Yii2选择查询多个值

时间:2019-05-04 01:55:52

标签: yii2 where-clause

当我要选择where IN查询时,如何在where子句中定义多个值?

请注意':k'=>1 and ':k'=>,如何将其用于2个值?

$query = Model::find()->where('id = :id and type = :k' ,[':id'=>$id, ':k'=>1,':k'=>27])->count();

3 个答案:

答案 0 :(得分:1)

您可以尝试在阵列上使用IN Baded 假设

$myArray = array(1,27);
$query = Model::find()->where(['IN', 'id', $myArray])
    ->andWhere('id = :id', [':id' => $id])->count();

答案 1 :(得分:1)

您可以通过以下方式做到这一点:

$types = [1, 27];
$query = Model::find()
    ->where(['id' => $id])
    ->andWhere(['type' => $types])
    ->count();

Yii2会将您的$types数组转换为IN条件。 SQL查询将是:

SELECT COUNT(*) FROM <table> WHERE id = <id> AND type IN (1, 27);

答案 2 :(得分:1)

也可以使用数组语法定义条件:

$count = Model::find()
    ->where([
        'AND',
        ['=', 'id', $id],
        ['IN', 'type', [1, 27]],
    ])
    ->count();