Mysql
 sql >> база данни >  >> RDS >> Mysql

ActiveRecord where_in() с масив

Масивът, който се опитвате да предадете, е многоизмерен масив. Вместо това опитайте това:

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

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

Не можете да изравните заявката->result_array() без итерация. Но ако трябва да обработвате често този вид заявки в приложението си и ако имате инсталиран>=PHP 5.3, можете да поставите следната функция в помощен файл на Codeigniter (или някъде другаде подходящо), за да ви помогне да изравните масиви:

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

И във вашия случай го използвайте така:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Портал за улавяне на PHP поръчки

  2. mysql изберете от n последни реда

  3. Динамични и ефективни ли са MySql Views?

  4. MySQL :Изберете записи с условия, които се отнасят за множество редове

  5. изберете една стойност, ако съществува, друга, ако не