无法通过模型功能代码点火器获取数据

时间:2017-07-19 20:59:44

标签: php arrays codeigniter model

我在现有控制器中创建了一个新函数,我正在访问模型的函数,该函数有一个查询来获取列表。

我已将模型加载到控制器中。此模型函数与其他函数一起使用,但不适用于新创建的函数。

class Cart extends CI_Controller 
{
    function Cart()
    {
        parent::__construct();
        $this->mdl_common->checkUserSession();
        $this->load->model('mdl_friend_web');
        $this->load->model('api/mdl_friend','mdl_friend_api');
        $this->load->model('mdl_cart_web');
        $this->load->library('pagination');
    }

//适用于此功能

    function ajax_get_cart_list($offset = 0) 
    {
        is_ajax();
        $this->load->model('mdl_cart_web');

        $limit = PER_PAGE;

        $s_data = $_POST;

        $carts = $this->mdl_cart_web->get_cart_list($limit,$offset,$s_data)->result_array();
        $totalRows = $this->mdl_cart_web->get_total_cart_product($s_data)->num_rows();

        $data = $this->mdl_common->pagination_data('cart/get_cart_list/',$totalRows,$limit,'show_data');
        $data['carts'] = $carts;
        $data['total_cart'] = $totalRows;

        $html = $this->load->view('cart/ajax_cart_list',$data,true);
        echo $html;
    }

//不为此工作

    function calculate_distance()
    {


        $limit = '';

        $delivery = 0;

        $previousName = '';
        $count = 0;
        $oneShop = '0';
        is_ajax();
       // $this->load->model('mdl_cart_web');
        $lat1 = $_POST['lat1'];
        $long1 = $_POST['long1'];
      //  $user_id = $_POST['user_id'];

        $user_id = $this->session->userdata('user_id');

        $carts = $this->mdl_cart_web->get_cart_list($limit,0,'')->result_array();

        $response = array();
        $data['carts'] = $carts;
        foreach($data['carts'] as $row) {

            echo $row['store_latitude'];

        }

    }  

模型

<?php
class Mdl_cart_web extends CI_Model
{
/*=================================================================================
                                Get cart list   
==================================================================================*/

    function get_cart_list($limit,$offset,$data)
    {
        $this->db->select('c.*,p.*,s.name as store_name,s.latitude as store_latitude,s.longitude as store_longitude,count(r.product_id) as review , IFNULL(AVG(r.star),0) as avg_star,i.*',false);
        $this->db->join('p_product as p','c.product_id = p.product_id','left');
        $this->db->join('p_product_image as i','c.product_id = i.product_id','left');
        $this->db->join('p_product_review as r','c.product_id = r.product_id','left');
        $this->db->join('p_store as s','s.store_id = p.store_id','left');
        $this->db->limit($limit,$offset);       
        $this->db->where('c.user_id',$this->session->userdata('user_id'));
        $this->db->group_by('c.cart_id');
        $this->db->from('p_cart as c');


        return $this->db->get();
    }

?>

我无法获取数组数据。我可以看到空白警报。 这里出了什么问题?请帮忙。谢谢。

2 个答案:

答案 0 :(得分:0)

我认为您正在编写查询但未正确尝试此操作:

$this->db->select('c.*,p.*,s.name as store_name,s.latitude as store_latitude,s.longitude as store_longitude,count(r.product_id) as review , IFNULL(AVG(r.star),0) as avg_star,i.*',false);
$this->db->from('p_cart as c');
$this->db->join('p_product as p','c.product_id = p.product_id','left');
$this->db->join('p_product_image as i','c.product_id = i.product_id','left');
$this->db->join('p_product_review as r','c.product_id = r.product_id','left');
$this->db->join('p_store as s','s.store_id = p.store_id','left');
$this->db->limit($limit, $offset);       
$this->db->where('c.user_id', $this->session->userdata('user_id'));
$this->db->group_by('c.cart_id');
return $this->db->get();

答案 1 :(得分:0)

如上面的评论和看到你的问题后,模型适用于一个函数而不是另一个函数,所以我认为加载模型是你必须正确看待的。

我看到你在不工作的功能中发现了一些基本问题。

  1. 您已在is_ajax()之后评论了模型加载代码。 // $this->load->model('mdl_cart_web');首先删除该评论,然后重试。

  2. 将正确且正确的数据发送到模型。请检查以下正确执行的代码行。

  3. 在你的不工作模式中。

    $carts = $this->mdl_cart_web->get_cart_list($limit,0,'')->result_array();
    

    在你的工作模式中:

    $carts = $this->mdl_cart_web->get_cart_list($limit,$offset,$s_data)->result_array();
    

    如果你在同一个控制器中的更多功能中使用相同的模型,我想要的一件事就是你应该使用__construct()

    public function __construct() {
        parent::__construct ();     
        $this->load->model('mdl_cart_web');              
    }
    

    通过在__construct()中添加模型,您可以在整个控制器和所有功能中使用它。