我需要所有数据$qryy它只返回最后一条记录



我如何返回$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
                )
        )
)

因此,根据您使用的方法,您需要以不同的方式处理数据输出。

有关加入的有用信息,请单击此处

相关内容

  • 没有找到相关文章

最新更新