在Codeigniter中,我尝试连接两个具有一对多关系的表。我想从我的表housetype
及其他表housetype_member
中的所有值/成员中获取一个结果:
$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,Name)来自第一个表,最后一个(image)来自第二个左表。一切都很好但我得到两个元素的数组,当我只需要一个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 :(得分: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;