sql >> Database >  >> RDS >> Mysql

ActiveRecord where_in() met array

De array die u probeert door te geven, is een multidimensionale array. Probeer in plaats daarvan dit:

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

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

U kunt de query->result_array() niet afvlakken zonder iteratie. Maar als je dit soort vragen veel in je applicatie moet verwerken, en als je>=PHP 5.3 geïnstalleerd hebt, zou je de volgende functie in een Codeigniter-helperbestand (of ergens anders geschikt) kunnen plaatsen om je te helpen bij het afvlakken van arrays:

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

En in jouw geval gebruik je het als volgt:

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



  1. SQL-query om kolomtellingen om te zetten in rijtellingen

  2. Hoe een tabel van MySQL naar Hive te importeren met Java?

  3. Converteer seconden naar voor mensen leesbare tijdsduur

  4. Een databasemodel voor een online-enquête. Deel 1