Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ActiveRecord where_in() mit Array

Das Array, das Sie zu übergeben versuchen, ist ein mehrdimensionales Array. Versuchen Sie stattdessen Folgendes:

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

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

Sie können query->result_array() nicht ohne Iteration abflachen. Wenn Sie diese Art von Abfragen jedoch häufig in Ihrer Anwendung verarbeiten müssen und wenn Sie>=PHP 5.3 installiert haben, können Sie die folgende Funktion in eine Codeigniter-Hilfsdatei (oder an einen anderen geeigneten Ort) einfügen, um Ihnen beim Reduzieren von Arrays zu helfen:

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

Und in Ihrem Fall verwenden Sie es so:

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