Mysql
 sql >> Baza danych >  >> RDS >> Mysql

ActiveRecord where_in() z tablicą

Tablica, którą próbujesz przekazać, jest tablicą wielowymiarową. Zamiast tego spróbuj tego:

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

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

Nie możesz spłaszczyć zapytania->tablica_wyników() bez iteracji. Ale jeśli potrzebujesz obsłużyć tego rodzaju zapytania w swojej aplikacji i jeśli masz zainstalowane>=PHP 5.3, możesz umieścić następującą funkcję w pliku pomocniczym Codeigniter (lub w innym odpowiednim miejscu), aby pomóc Ci spłaszczać tablice:

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

A w twoim przypadku użyj go tak:

    $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. MySQL Select Query, gdy chcesz zwrócić grupy x elementów w partiach

  2. jak może wpłynąć na wydajność, gdy używam identyfikatorów UUID jako moich kluczy podstawowych w MySQL?

  3. Laravel po lewej Dołącz tylko do ostatniego rekordu prawej tabeli

  4. Alternatywa singletona dla PHP PDO

  5. Czy użycie LIMIT 1 przyspiesza zapytanie o klucz podstawowy?