我如何返回$qryy
的所有数据,它只返回我最后一条记录。我需要如何返回所有关闭的数据。
public function get_subcategory(){
$qry = $this->db->get("shopping_category");
foreach($qry->result() as $row){
$this->db->where("c_id",$row->id);
$qryy = $this->db->get("shopping_subcategory");
}
return $qryy;
}
你可以试试这个
public function get_subcategory() {
$result = [];
$qry = $this->db->get("shopping_category");
foreach ($qry->result() as $row) {
$this->db->where("c_id", $row->id);
$qryy = $this->db->get("shopping_subcategory");
$result[] = $qryy;
}
return $result;
}
你得到最后一条记录的原因是,每次你遍历foreach数据时,它都会不断替换$qryy = $this->db->get("shopping_subcategory");
要解决此问题,您只需将$qryy
更改为这样的数组$qryy[]
即可。
为了改进您的查询。 你可以简单地尝试
$qryy = [];
$this->db->select("shopping_subcategory.*");
$this->db->from("shopping_category");
$this->db->join('shopping_subcategory', 'shopping_category.id = shopping_subcategory.c_id');
$sql= $this->db->get();
$qryy = $sql->result_array();
$data['category'] = $qryy;
$this->load->view('view_name', $data);
在视野中
$category
将显示您的数据
我认为它解决了你的问题。 你介意试一试吗?
由于您想要从表中shopping_category
只是id
我尝试获取它,因此它对您的服务器来说不是一项繁重的工作。
$result = [];
$qry = $this->db->select("id")->get('shopping_category');
foreach ($qry->result() as $row) {
$this->db->where("c_id", $row->id);
$qryy = $this->db->get("shopping_subcategory")->result();
$result[] = $qryy;
}
return $result;
希望对:)有所帮助
您应该使用另一种方法来解决问题:使用联接仅查询数据库一次:
$this->db->join("shopping_subcategory t2","t2.c_id=t1.id");
$qry = $this->db->get("shopping_category t1");
return $qry->result();
如果用 print_r($qry->result())
输出上面,你会得到类似于以下内容:
Array
(
[0] => stdClass Object
(
[ID] => 1
[company_ID] => 1
[name] => aaa
)
[1] => stdClass Object
(
[ID] => 2
[company_ID] => 1
[name] => bbb
)
[2] => stdClass Object
(
[ID] => 4
[company_ID] => 2
[name] => ccc
)
)
要解决您的方法:您需要$qryy创建一个数组,以存储每个子查询数据,现在您正在覆盖每个循环的变量$qryy,因此只能获得最后一个结果:
$qry = $this->db->get("shopping_category");
$qryy=array();
foreach($qry->result() as $i=>$row){
$this->db->where("c_id",$row->id);
$qryy[$i] = $this->db->get("shopping_subcategory")->result();
}
return $qryy;
如果使用 print_r($qryy)
输出上述内容,则得到类似于以下内容:
Array
(
[0] => Array
(
[0] => stdClass Object
(
[ID] => 1
[company_ID] => 1
[name] => aaa
)
[1] => stdClass Object
(
[ID] => 2
[company_ID] => 1
[name] => bbb
)
)
[1] => Array
(
[0] => stdClass Object
(
[ID] => 4
[company_ID] => 2
[name] => ccc
)
)
)
因此,根据您使用的方法,您需要以不同的方式处理数据输出。
有关加入的有用信息,请单击此处