sql >> Database teknologi >  >> RDS >> Mysql

ActiveRecord where_in() med array

Det array, du forsøger at passere, er et multidimensionelt array. Prøv i stedet dette:

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

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

Du kan ikke udjævne query->result_array() uden iteration. Men hvis du har brug for at håndtere denne slags forespørgsler meget i din applikation, og hvis du har>=PHP 5.3 installeret, kan du indsætte følgende funktion i en Codeigniter-hjælpefil (eller et andet passende sted) for at hjælpe dig med at udfladning af arrays:

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

Og i dit tilfælde brug det sådan her:

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



  1. MySQL ResultSet scrollable/updatable fungerer ikke som forventet

  2. Hvornår/hvorfor skal man bruge Cascading i SQL Server?

  3. Hvorfor forbinder du ikke Android til databasen direkte?

  4. Total op Subtotal i gittervisning