Ожидаете ли вы, что первый запрос вернет только одну строку?
Если это так, вам следует использовать:
$query = $this->db->get();
$row = $query->row();
$app_id = $row->app_id;
//etc
ЭтоНепонятно из вашего вопроса.
Если ваш первый запрос возвращает (или может вернуть) несколько строк, то вам нужно сделать следующее:
$query = $this->db->get();
if ($query->num_rows() > 0) :
foreach($query->result_array() as $row)
{
$this->db->select('app_name')
->from('applications')
->where('id' , $row['app_id']);
}
$body['query'] = $this->db->get();
endif;
// etc
вы очень можетену надо корректировать код, так как я не уверен, какой у вас желаемый результат.Вы видите разницу?
Если вы вернете result_array
, у вас будет массив результатов (представьте себе!) - следовательно, почему у вашего var_dump
есть [0]=> array(1)
и т. Д. - есть массив для каждой возвращаемой строки.
Если вы хотите / ожидаете вернуть только один результат из первого запроса, вы должны использовать row
.
Надеюсь, это имеет смысл - должен быть толчок в правильном направлении.
edit На самом деле это может быть правильный синтаксис:
$query = $this->db->get();
if ($query->num_rows() > 0) :
$this->db->select('app_name')->from('applications');
foreach($query->result_array() as $row)
{
$this->db->where('id' , $row['app_id']);
// build the `where...` string with iteration/result/row
}
$body['query'] = $this->db->get(); // now we get the data.
endif;
// etc