Codeigniter 模型 foreach 将数组传递给控制器​​ -> 查看

fab*_*bbb 0 php codeigniter

这是我的模型 - 我想分配行并在视图页面上回显,例如<?php echo $product?>

class Model_products extends CI_Model {

    function printer()
    {

    $id = $this->uri->segment(3, 0);

        $q = $this->db->get_where('printer', array('id' => $id));

        if ($q->num_rows == 1)
        { 
            foreach ($q->result() as $row)
            {

                echo $row->name; # THIS WORKS
                $data['product'] = $row->name;  # THIS DOES NOT WORK
                $data['desc'] = $row->description;
                $data['size'] = $row->size;
                $data['options'] = $row->options;
                $data['more'] = $row->more_info;
            }
        }


    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器

public function products()
{

    $this->load->model('Model_products');

    $this->Model_products->printer();

    $this->load->view('products', $data);

    $this->load->view('pricing');
}
Run Code Online (Sandbox Code Playgroud)

我的看法是

<h1>
<?php echo $product; ?>
</h1>

<p>
<?php echo $desc; ?>
</p>


<h3>
Size
</h3>
<p>
<?php echo $size; ?>
</p>
Run Code Online (Sandbox Code Playgroud)

如何正确地将模型数组传递到控制器,以便我可以在视图上回显?

Muh*_*eel 5

只需将 $data 返回到控制器即可

class Model_products extends CI_Model {

    function printer()
    {
        $data   =   array();
        $id = $this->uri->segment(3, 0);

        $q = $this->db->get_where('printer', array('id' => $id));

        if ($q->num_rows == 1)
        { 
            foreach ($q->result() as $row)
            {

               // echo $row->name; # THIS WORKS
                $data['product'] = $row->name;  # THIS DOES NOT WORK
                $data['desc'] = $row->description;
                $data['size'] = $row->size;
                $data['options'] = $row->options;
                $data['more'] = $row->more_info;
            }
        }

    return $data;
    }
}
Run Code Online (Sandbox Code Playgroud)

没有赢控制器

public function products()
{

    $this->load->model('Model_products');

    $data['products']   =   $this->Model_products->printer();

    $this->load->view('products', $data);

    $this->load->view('pricing');
}
Run Code Online (Sandbox Code Playgroud)

并且在视野中

<?   
   echo '<pre>';
   print_r($products);
?>
Run Code Online (Sandbox Code Playgroud)

编辑还要更正您的模型代码。

        foreach ($q->result() as $row)
        {

            echo $row->name; # THIS WORKS
            $data[]['product'] = $row->name;  # THIS DOES NOT WORK
            $data[]['desc'] = $row->description;
            $data[]['size'] = $row->size;
            $data[]['options'] = $row->options;
            $data[]['more'] = $row->more_info;
        }
Run Code Online (Sandbox Code Playgroud)

如果您不使用多维数组,它将覆盖最后一条记录。