sql >> Databáze >  >> RDS >> Mysql

ActiveRecord where_in() s polem

Pole, které se pokoušíte předat, je vícerozměrné pole. Místo toho zkuste toto:

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

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

Dotaz->result_array() nemůžete sloučit bez iterace. Pokud ale ve své aplikaci potřebujete hodně zpracovávat tento druh dotazů a máte nainstalované>=PHP 5.3, můžete do pomocného souboru Codeigniter (nebo někam jinam, kde je to vhodné), vložit následující funkci, která vám pomůže se zploštěním polí:

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

A ve vašem případě to použijte takto:

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



  1. zpracování velkého počtu záznamů databáze se stránkováním se časem zpomaluje

  2. Odeslání více polí ve formuláři (PHP)

  3. Jak vložit hodnoty v poli PHP do tabulky MySQL?

  4. CHYBA:v Postgresu byla nalezena více než jedna vlastněná sekvence