我想知道是否可以从codeigniters活动记录中合并如下的SQL查询。
//get assigned contacts
$this->db->select('*, CONCAT(first_name, " " ,last_name) AS name', FALSE);
$this->db->from('customers_contacts');
$this->db->join('customers_accounts', 'customers_accounts.contact_id = customers_contacts.contact_id');
$this->db->like('CONCAT(first_name, " " ,last_name)', $q);
$results1 = $this->db->get();
//get non assigned contacts
$this->db->select('*, CONCAT(first_name, " " ,last_name) AS name', FALSE);
$this->db->from('customers_contacts');
$this->db->like('CONCAT(first_name, " " ,last_name)', $q);
$results2 = $this->db->get();
我尝试使用$query = array_merge($results1, $results2);
,但这不起作用,我相信因为->get()
正在返回一个对象数组。
所以我通过将两者放在foreach循环中然后合并生成的数组来实现它。但是我需要做一些在一个foreach循环中比两个更容易的条件。
答案 0 :(得分:0)
经过一番阅读后,我想出了以下内容并且有效!
//first query here...
$results1 = $this->db->get()->result_array();
//second query here...
$results1 = $this->db->get()->result_array();
//then...
$query = array_merge($results1,$results2);
答案 1 :(得分:0)
您可以使用如下
$arr_results1 = $this->db->get()->result_array();
$arr_results2 = $this->db->get()->result_array();
var_dump(array_merge($arr_results1,$arr_results2));
希望这会对你有帮助!
答案 2 :(得分:0)
您必须始终$results->result();
获取$results = $this->db->get();
之后的行数组。 注意: $results->result();
是一个对象数组。
例如
# ...
$results1 = $this->db->get();
# ...
$results2 = $this->db->get();
$results = array();
if ($results1->num_rows())
{
$results = array_merge($results, $results1->result());
}
if ($results2->num_rows())
{
$results = array_merge($results, $results2->result());
}
return $results;
这将返回一个对象数组(行),并像往常一样迭代数据:
foreach ($results as $row)
{
echo $row->id;
echo $row->column_name_1;
# and so on...
}