ActiveRecord where_in () с массивом

Я пробовал несколько разных подходов к этой проблеме без каких-либо решений. Я получаю это сообщение об ошибке:

Неизвестный столбец «Массив» в разделе «where clause»

SELECT * FROM ( Articles ) WHERE id IN (массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, массив, Array, Array, Array, Array, Array, Array, Array, Array, Array, Array, Array, Array, Array, Array)

Вот мой код модели:

 function getStarNews($user_id) { $this->db->select('id'); $this->db->where('user_id', $user_id); $query = $this->db->get('table1'); foreach ($query->result_array() as $id) { //echo $id['id']."<br>"; //displays all of the correct ids I am trying to pass to the where_in() } $id = $query->result_array(); $this->db->where_in('id', $id); //pass array of 'id' from above query $data = $this->db->get('Articles'); return $data->result_array(); } 

Если я изменил массив id, содержащий только 1 значение, то предложение where_in () отлично работает и выводит строку данных, соответствующую одному «id».

Я просмотрел весь стек и google для помощи в использовании where_in (), и я думаю, что у меня все правильно, или попробовали несколько разных методов для правильной передачи массива.

Спасибо за помощь.

EDIT: В конце я буду выводить эти данные с помощью своего контроллера, используя:

 $this->output->set_output(json_encode($data)); 

Для тестирования я просто пропустил JSON и пытался напрямую выводить данные с PHP из модели.

Массив, который вы пытаетесь передать, представляет собой многомерный массив. Вместо этого попробуйте следующее:

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

 $ this-> db-> где_in ('id', $ ids);

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

 функция flatten (массив $ array) {
     $ return = array ();
     array_walk_recursive ($ array, function ($ a) use (& $ return) {$ return [] = $ a;});
     return $ return;
 }

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

     $ ids = flatten ($ query-> result_array ());
     $ this-> db-> где_in ('id', $ ids);