无法在codeigniter

时间:2018-02-25 15:07:04

标签: php codeigniter join

在我的代码中,我有两张表1. cv_products 2。cv_category

cv_produucts字段是 - > idtitlebodyimagecategoryslug
cv_category字段为 - > idname

我希望当我进入详情页面时,它会给我一个错误,name未定义但我加入了这些表格。

我能够在列表页面中获取数据,namecv_categorycv_products表中获取category类别没有问题。

模型:

class Product_model extends CI_Model{
    public function __Construct(){
        $this->load->database();
    }


    public function get_products($slug = FALSE){
        if($slug === FALSE){
            $this->db->order_by('cv_products.id', 'DESC');
            $this->db->join('cv_category','cv_category.id = cv_products.category', 'left');
            $query= $this->db->get('cv_products');
            return $query->result_array();

        }

        $query= $this->db->get_where('cv_products', array('slug' => $slug));
        return $query->row_array();
      }
    } 

控制器

    public function index(){

           $data['subview']= 'pages/listing';
           $data['cv_products'] = $this->Product_model->get_products();

           $this->load->view('layout_main',$data);
           print_r($data['cv_products']);
    }


public function view($slug= NULL){
      $data['post'] = $this->Product_model->get_products($slug);


        if(empty($data['post'])){
            show_404();
        }
      $this->load->view('pages/product_view',$data);  
}

public function get_categories(){


    $this->db->order_by('name');
    $query = $this->db->get('cv_category');
    return $query->result_array();

}

视图:

  <div class="col-5"> 
        <p><?php echo $post['title'] ?></p>
        <p><?php echo $post['body'] ?></p> 
        <p><?php echo $post['name'] ?></p>
   </div>  

2 个答案:

答案 0 :(得分:1)

当$ slug有价值时,你错过了加入类别表。试试:

public function get_products($slug = FALSE){
    if($slug === FALSE){
       ...
    }

    $this->db->join('cv_category','cv_category.id = cv_products.category', 'left');
    $query= $this->db->get_where('cv_products', array('slug' => $slug));
    return $query->row_array();
  }
} 

答案 1 :(得分:0)

在您的查询中实际上未选择类别名称,您加入两个表格的确如此,但您必须从中选择列。

<script href="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<script type="text/javascript">
    $(window).on('scroll', function(){
        if($(window).scrollTop()){
            $('nav').addClass('black');
        }else{
            $('nav').removeClass('black');
        }
    })