CodeIgniter:将数据从模型引入控制器以在同一控制器中使用

时间:2016-03-24 12:32:51

标签: php codeigniter

我想将模型中查询的数据传递给控制器​​,为此我使用return $ data。

我的控制器(更新):

public function order() {

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

$shipping_cost = $this->cost_m->get_cost_user($this->input->post('city'));
$this->data['shipping_cost'] = $shipping_cost[0]['shipping_cost'];

      $order = array('user_id' => $this->session->userdata('user_id'),
                     'shipping cost' => $shipping cost,
                     'total_cost' => (($this->cart->total())+$shipping_cost),
                     'total_item' => $this->input->post('total_item'));
}

和我的模特

public function get_cost_user($city){
      $data = array();
      $this->db->like('city_name',$city);
      $data = return $this->_get()->result_array();

      return $data;
}

我的问题是为什么我的get_cost_user()返回值总是给我NULL?

2 个答案:

答案 0 :(得分:0)

首先,您在尝试设置运费时遇到语法错误。你有一个空间"运输"和"成本"在$this->data->shipping cost =。那是一个错误。解决这个问题。

真正的问题是您正在创建变量:$this->data->shipping_cost,然后尝试在下一行中访问它,如下所示:$shipping_cost

您的困惑来自以下事实:当Code Igniter中加载view时,您可以使用其索引名称访问$data数组中设置的变量。这是因为Code Igniter在幕后做了一些魔术,让你这样做。

以下是设置运费的正确方法:

$shipping_cost = $this->cost_m->get_cost_user($this->input->post('city'));
$this->data['shipping_cost'] = $shipping_cost[0]['shipping_cost'];

然后在您的视图中访问运费如下:

var_dump($shipping_cost);

回答更新的代码

你再次在$shipping cost中输入错字。但这不是问题。将数组中的$shipping cost更改为$this->data['shipping_cost']

答案 1 :(得分:0)

好的,这是我的最终修正

控制器

public function order() {

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

$shipping_cost = $this->cost_m->get_cost_user($this->input->post('city'));
$shipping_cost = $shipping_cost[0]['shipping_cost'];

      $order = array('user_id' => $this->session->userdata('user_id'),
                     'shipping cost' => $shipping_cost,
                     'total_cost' => (($this->cart->total())+$shipping_cost),
                     'total_item' => $this->input->post('total_item'));
}

模型

public function get_cost_user($city){
      $data = array();
      $this->db->like('city_name',$city);
      $data = return $this->_get()->result_array();

      return $data;
}