我正在使用PHPActiveRecord和CodeIgniter。我正在尝试创建博客CMS,并且博客具有许多类别,并且它引用了另一个称为blogrefs的表。所以基本上

博客=> blogrefs =>博客猫

blogrefs通过blogrefs.blog_id引用博客。

blogrefs通过blogrefs.blogcat_id与Blogcats进行引用

    function get_blogs($params = array()){

    $CI =& get_instance();

    $joins  = 'LEFT JOIN blogrefs ON blogs.id = blogrefs.blog_id';
    $joins  .= 'LEFT JOIN blogcats ON blogrefs.blogcat_id = blogcats.id';
    $category = (isset($params['category']))?$params['category']:'';
    $keyword = (isset($params['keyword']))?$params['keyword']:'';
    $status = (!isset($params['status']) || $params['status'] == '')?'':$params['status'];
    $order_by = (isset($params['order_by']))?$params['order_by']:'created_on';
    $direction = (isset($params['direction']))?$params['direction']:'DESC';
    $limit = (isset($params['limit']))?$params['limit']:'';
    $offset = (isset($params['offset']))?$params['offset']:'';
    $st = '';
    if($status == ''){
        $st = '!';
    }

        if(!empty($category))
        {
            $conditions = array(
                "((blogcats.id = ?) OR (blogcats.parent_id = ?))
                 AND blogs.status $st= ?
                 AND (blogs.title LIKE '%$keyword%' OR blogs.content LIKE '%$keyword%')",$category,$category,$status
            );

        }else{
            $conditions = array(
                "blogs.status $st= ?
                 AND (blogs.title LIKE '%$keyword%' OR blogs.content LIKE '%$keyword%')",$status
            );
        }

    $result = Blog::find('all',array(
        'include'       => array('blogcat','blogref','user'),
        'joins'         => $joins,
        'conditions'    => $conditions,
        'limit'         => $limit,
        'offset'        => $offset,
        'order'         => "$order_by $direction",
        'group'         => 'blogs.id'
    ));

    $count =  Blog::find('all',array(
        'conditions'    => $conditions
    ));

    $object = new stdClass;
    $object->posts = $result;
    $object->total = count($count);
    return $object;

}


一切都不仅在我使用时有效

(((blogcats.id =?)或(blogcats.parent_id =?))

从特定类别获取博客。任何答案将不胜感激。

最佳答案

我不太清楚。为什么不使用模型和CI的Active Record类? (http://ellislab.com/codeigniter/user-guide/database/active_record.html),例如

    $this->db->where('blogrefs.blogcat_id', $catid);
    $this->db->join('blogrefs', 'blogs.id = blogrefs.blog_id');
    ...

关于php - LEFT JOIN关联返回未知列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15690285/

10-11 08:04