1
votes

Requête de sélection Yii2 où plusieurs valeurs

Lorsque je veux sélectionner la requête IN where, comment définir plusieurs valeurs dans la clause where?

Remarque sur le ': k' => 1 et ': k' => , comment l'utiliser pour 2 valeurs?

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


0 commentaires

3 Réponses :


1
votes

Vous pouvez essayer d'utiliser IN baded sur un tableau en supposant

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


0 commentaires

1
votes

Vous pouvez le faire de cette manière:

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

Yii2 convertira votre tableau $ types en condition IN . La requête SQL sera:

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


0 commentaires

1
votes

Les conditions peuvent également être définies à l'aide de la syntaxe de tableau:

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


0 commentaires