2015-12-07 53 views
0

在Codeigniter中,我嘗試加入兩個具有一對多關係的表。我想從另一個表housetype_member從我的表housetype及其所有值/成員得到一個結果:用一個正確的值加入多個左值

$this->db->select('*'); 
    $this->db->join('housetype_member', 'housetype_member.housetype_id = housetype.PkId', 'left'); 
    $result = $this->db->get_where('housetype', array('PkId' => $id)); 

    return $result->result(); 

到目前爲止,我得到這樣的結果:

array (size=2) 
    0 => 
    object(stdClass)[28] 
     public 'PkID' => string '4' (length=1) 
     public 'Name' => string 'Classic' (length=7) 
     public 'image' => string '1449063250.jpg' (length=14) 
    1 => 
    object(stdClass)[30] 
     public 'PkID' => string '4' (length=1) 
     public 'Name' => string 'Classic' (length=7) 
     public 'image' => string '1449063288.gif' (length=14) 

前兩個對象值(PKID,名稱)來自第一個表,最後一個(圖像)來自第二個左表。一切都很好,但我有兩個元素的陣列,當我只需要一個housetype對象。

是否有寫上面的代碼,使我返回的對象應該是這樣的方式:

object(stdClass)[28] 
    public 'PkID' => string '4' (length=1) 
    public 'Name' => string 'Classic' (length=7) 
    public 'image' => 
    array (size=2) 
     0 => string '1449063250.jpg' (length=14) 
     1 => string '1449063288.gif' (length=14) 

我需要從第一個表,並給它一個結果,我想參加所有成員從第二表。

它可以用Codeigniters活動記錄完成嗎?

+0

您可以通過[MY_Model](https://github.com/avenirer/CodeIgniter-MY_Model)實現此目的。 – Tpojka

+0

@Tpojka我已經在使用Bonfire擴展的擴展模型,並且我不想在項目的最後階段切換它。 MY_Model有一些有趣的功能,雖然 – Orangutan

回答

1

只要你的第二個表有多個記錄與主鍵,最好是如果你根本不使用聯接。 你可以簡單地得到兩個選擇。

$this->db->select('PkID, name'); 
$this->db->where('PkId', $id); 
$houseTypes = $this->db->get('housetype')->result(); 
foreach($houseTypes as $houseType){ 
    $this->db->select('image'); 
    $this->db->where('housetype_id', $houseType->PKId); 
    $houseType->image = $this->db->get('housetype_member')->result(); 
} 
return $houseTypes; 
+0

把數據庫查詢操作放在foreach循環中是很大的不不。 – Tpojka