sql >> Databasteknik >  >> RDS >> Mysql

ActiveRecord where_in() med array

Arrayen du försöker passera är en flerdimensionell array. Prova istället detta:

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

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

Du kan inte platta till query->result_array() utan iteration. Men om du behöver hantera den här typen av frågor mycket i din applikation, och om du har>=PHP 5.3 installerat, kan du lägga in följande funktion i en Codeigniter-hjälpfil (eller någon annan lämplig plats) för att hjälpa dig att platta arrayer:

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

Och i ditt fall använd det så här:

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



  1. räkna mysql-värden

  2. Postgres CASE i ORDNING GENOM att använda ett alias

  3. Sphinx Search mysql-klient på produktionsserver

  4. Symfony2 - Åtkomst nekad (användaren är inte helt autentiserad)