Bonjour,
je commence "doucement" avec cakephp 3. Et je cherche à afficher une liste de produits, différent de plusieurs id.

Je fais pour cela un "find 'list'"

        $query = $this->Productsetudes->find('list', [
            'keyField' => 'product_id',
            'valueField' => 'product_id'
        ])
        ->where(['Productsetudes.etude_id' => $etude_id]);
        $ids = $query->toArray();

Je récupère une liste ($ids)
Enssuite j'aimerais récupérer les produits "différents" de la liste ($ids)

exemple:

            'conditions' => [
                'Products.id != ' => $ids,
            ],

Pour récupérer les produits "correspondant" à la liste c'est facile, je fais cela

            'conditions' => [
                'Products.id IN ' => $ids
            ],

Mais "diferents de plusieurs", je sais pas comment faire. je me retrouve avec une erreur : "Cannot convert value of type array to integer "

Merci d'avance

3 réponses


Kareylo
Réponse acceptée

Et juste ne fonctionne pas ?

'conditions' => [
                'Products.id NOT IN ' => $ids
            ],

Après véirication, il semblerait y avoir une méthode notIn() dans le QueryBuilder :

$query = $cities->find()
    ->where(function (QueryExpression $exp, Query $q) {
        return $exp->notIn('country_id', ['AFG', 'USA', 'EST']);
    });

Plus d'infos ici

Merci Kareylo,
J'avais essayé "NOT", mais pas "NOT IN" ^^