Mysql
 sql >> Base de données >  >> RDS >> Mysql

ActiveRecord where_in() avec tableau

Le tableau que vous essayez de transmettre est un tableau multidimensionnel. Essayez plutôt ceci :

$ids = array();
foreach ($query->result_array() as $id)
    {
        $ids[] = $id['id'];
    }

$this->db->where_in('id', $ids);

Vous ne pouvez pas aplatir la requête->result_array() sans itération. Mais si vous avez besoin de beaucoup gérer ce type de requêtes dans votre application, et si vous avez>=PHP 5.3 installé, vous pouvez mettre la fonction suivante dans un fichier d'aide Codeigniter (ou ailleurs approprié) pour vous aider à aplatir les tableaux :

function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

Et dans votre cas, utilisez-le comme ceci :

    $ids = flatten($query->result_array());
    $this->db->where_in('id', $ids);