Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

ActiveRecord where_in() dengan array

Array yang Anda coba lewati adalah array multi dimensi. Sebagai gantinya coba ini:

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

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

Anda tidak dapat meratakan query->result_array() tanpa iterasi. Tetapi jika Anda perlu banyak menangani kueri semacam ini di aplikasi Anda, dan jika Anda telah menginstal>=PHP 5.3, Anda dapat meletakkan fungsi berikut dalam file pembantu Codeigniter (atau di tempat lain yang sesuai) untuk membantu Anda meratakan array:

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

Dan dalam kasus Anda gunakan seperti ini:

    $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. Pengecualian di utas utama java.lang.IncompatibleClassChangeError:Ditemukan antarmuka org.Apache.hadoop.mapreduce.JobContext, tetapi kelas diharapkan?

  2. PHP - Jadikan kunci larik kueri saya sebagai ID

  3. Mana yang lebih baik, gabungan implisit atau eksplisit?

  4. mysql:pilih max(score) tidak mengembalikan data baris yang relevan

  5. NodeJS, tidak menutup koneksi mysql