【问题标题】:Codeigniter passing data from model to controllerCodeigniter 将数据从模型传递到控制器
【发布时间】:2014-06-27 15:46:26
【问题描述】:

我是 CodeIgniter 的新手。有人可以告诉我如何将模型中的 $row['main_products_cat_id']; 传递给控制器​​中的 'id'=> 'my id here', 来帮助我。我尝试了很多方法,但都失败了。

谢谢!!!

这是我的模特

function cart_product_records($id){

        $this->db->from('tbl_sub_products');
        $this->db->where('tbl_sub_products.sub_product_id', $id);
        $query = $this->db->get();

        foreach ($query->result_array() as $row){

            echo $row['main_products_cat_id'];
            echo $row['sub_product_id'];
            echo $row['sub_product_name'];
            echo $row['sub_product_description'];
            echo $row['sub_product_image'];
            echo $row['sub_product_price'];    
        }
        return $query->result();    
}

这是我的控制器

function shopping_cart(){  

        $id = $this->input->get('id');    
        if($query =   $this->mod_products->cart_product_records($id)){

            $data['result'] = array(

                       'id'      => 'my id here',
                       'qty'     => my qty here,
                       'price'   => my price here,
                       'name'    => 'my product name here'

                    );
        }

 }

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    首先 - 你不应该在你的模型中 echo 数据 - 你真的应该只在你的视图文件中 echo 数据。

    数据流动的方式是首先将$id 从控制器传递到mod_products 模型中的cart_product_records 函数。然后模型运行查询并从您的数据库中获取数据。此数据由 $query->result_array()$query->result() 表示(您同时使用这两种方法,但您应该只使用一次)。

    然后您就有了return $query->result(),它将您的数据发送回您的控制器。数据将存储在$query 变量中,因为您拥有$query = $this->mod_products->cart_product_records($id)

    如果我是你,我会在 if 语句中添加一个 !empty() 检查,所以它看起来像这样:

    if( !empty($query =   $this->mod_products->cart_product_records($id)) ){
    

    然后,根据您想从 $query 获取的数据,您可能想要构建一个循环(这将使您能够提取多个 id、价格等),或者您可以检索特定值来自$query,如$query[0][main_products_cat_id](假设$query 是一个数组)或$query[0]->main_products_cat_id(如果它是一个对象)。

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      您的 $query 保存数据库结果对象。因此,您将在控制器的 $data 数组中执行此操作。

      $data['result'] = array(
          'id' => $query->main_products_cat_id,
          // carry on...
      );
      

      【讨论】:

      • 我想应该是$query[0]->main_products_cat_id
      • 你是对的。我会从模型返回 $query[0]。
      【解决方案3】:

      我写的没有意义

      echo $row['main_products_cat_id'];
      ....
      

      在你的循环中创建数组为

      foreach ($query->result_array() as $row){
      
                 $return_array[] = $row;
              }
              return $return_array
      

      在控制器中,您可以访问为

      $query['your_id'];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-27
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        相关资源
        最近更新 更多