0

我现在遇到了一个问题,我ratinglinks表中调用了一个列,并且在列中肯定有其他值,00它是为每个链接返回的唯一值。当我对该列进行简单的获取时,它会显示所有其他值,但当我执行 SQL 联接时不会显示。

我知道问题是我加入了表格,但我不确定如何加入这些特定的表格。

数据库表结构

rating专栏是给我带来问题的专栏。

'links' id | title | url | user_id | list_id | rating | weight | date_created

'list' id | list_title | list_description | user_id | rating | views | date_created

'link_ratings' id | user_id | link_id | rated | date_created

模型:

public function get_latest(){

    $this->db->limit(100);
    $this->db->order_by('links.date_created', 'DESC');
    $this->db->select('*');
    $this->db->select('links.id as current_link_id');
    $this->db->from('links');
    $this->db->join('list', 'links.list_id = list.id'); 
    $this->db->join('users', 'links.user_id = users.id');
    $this->db->join('link_ratings', 'links.id = link_ratings.link_id','left');      

    $get_latest = $this->db->get();

    return $get_latest;

}

任何帮助表示赞赏。

4

2 回答 2

1

你应该试试这个:

function get_latest(){
    $this->db->select('list.*, users.*, links.id as current_link_id');
    $this->db->from('links');
    $this->db->join('list', 'links.list_id = list.id'); 
    $this->db->join('users', 'links.user_id = users.id');
    $this->db->join('link_ratings', 'links.id = link_ratings.link_id','left');      
    $this->db->order_by('links.date_created', 'DESC');
    $this->db->limit(100);
    $get_latest = $this->db->get()->result_array(); #fetch all rows here
    echo "<pre>";print_r( $get_latest );die; #print all rows and see if its fetching ratings corrctly or not.
    echo $this->db->last_query();die; #check the query generated
    return $get_latest;
}
于 2013-11-01T14:05:22.183 回答
0

原因纯粹是合乎逻辑的,因为连接将导致没有结果返回,因为没有结果。我已经陷入这种情况很多次了。

我无法诊断您的特定问题,但是当遇到这样的问题时,我:

1-打开 CI 分析器

2- var_dump 数组,这样你就可以看到发生了什么

3- 编写一个传统的 SQL 查询并在 PHPMyAdmin 中运行

一个,或所有三个的组合,将使您能够诊断。

于 2013-11-01T15:38:34.910 回答