2012-01-14 82 views
0

當我嘗試加入左連接時,Codeigniter的活動記錄似乎不會獲取我所有的行。Codeigntier Active Record加入

DB設置(簡體)

Things          Likes 
----------------------------------------  --------------------------- 
| thing_id | thing_name | user_id |  | thing_id | user_id | 
----------------------------------------  --------------------------- 
|  1  | Thing 1 | 5555 |  | 2  | 6666 | 
|  2  | Thing 2 | 5555 |  | 3  | 7777 | 
|  3  | Thing 3 | 5555 |  --------------------------- 
|  4  | Thing 4 | 5555 | 
----------------------------------------  

當我取反對「東西」表名單由USER_ID,我得到的4

$sql = $this->db->where('things.user_id', $user_id)->get('things')->result(); 

預期的結果但是,當我做到這一點,我得到3(東西2,4)。

$sql = $this->db->select('things.thing_id as thing_id, COUNT(likes.thing_id) as likes') 
        ->where("things.user_id", $user_id) 
        ->from('things') 
        ->join('likes', 'things.thing_id = likes.thing_id', 'LEFT') 
        ->group_by('likes.thing_id') 
        ->get() 
        ->result(); 

我很困惑,因爲它並搶1「東西」是不是在「喜歡」表,而不是其他,所以我很困惑,如果它是一個JOIN失敗,還是其他什麼東西。

解決:通過從 'likes.thing_id' 切換GROUP BY爲 'things.thing_id'

回答

0

通過從likes.thing_id切換GROUP BYthings.thing_id解決。

我的3項的結果是被分組爲Thing 2Thing 3NULL,其中2項不在likes表分別被分組作爲一個結果。