Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

ActiveRecord where_in () với mảng

Mảng bạn cố gắng vượt qua là một mảng nhiều chiều. Thay vào đó, hãy thử điều này:

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

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

Bạn không thể làm phẳng truy vấn-> result_array () mà không lặp lại. Nhưng nếu bạn cần phải xử lý nhiều loại truy vấn này trong ứng dụng của mình và nếu bạn đã cài đặt> =PHP 5.3, bạn có thể đặt hàm sau vào tệp trợ giúp Codeigniter (hoặc một nơi nào khác phù hợp) để giúp bạn làm phẳng các mảng:

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

Và trong trường hợp của bạn, hãy sử dụng nó như thế này:

    $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. danh tính mysql và asp.net

  2. MYSQL / PHP CHỌN DISTINCT

  3. Symfony2 và Doctrine2:Không có mã định danh / khóa chính nào được chỉ định cho Đối tượng X. Mọi Đối tượng phải có một mã định danh / khóa chính

  4. Không thể kết nối với máy chủ MySQL lỗi 111

  5. Sử dụng Truy vấn Chọn bên trong vòng lặp while trong php