我在property_address表中列出了一个记录,在property_images表中有三个图像属于列表中的那一个记录。现在我想要返回一行的所有图像。但我得到的是3行,因为3个图像与属性图像表中的每个图像都创建了一个新行。
我有三张桌子
以下是架构。
这是模型功能。
public function get_listing($where)
{
$this->db->select('dl.*,pi.*,ps.*');
$this->db->from('listing as dl');
$this->db->join('property_address as ps','ps.property_add_id=dl.prop_id');
$this->db->join('property_images as pi','pi.listing_id=dl.prop_id','right');
if(!empty($where))
{
$this->db->where($where);
}
$query=$this->db->get();
return $query->result();
}
这是控制器。
public function testin()
{
$data=$this->dba->get_listing(array('dl.prop_id'=>2));
echo "<pre>";
print_r($data);
echo "</pre>";
}
答案 0 :(得分:1)
实际上它可能会返回3条记录,因为property_address表与列表有关系,当你加入并检索记录时,它将在外键的基础上和查询的基础上返回3条记录。
你应该做的是以编程的方式管理记录,就像你有3个相同的记录,不同的图像分别获取相同的记录,而不是循环图像。
示例:
public function testin()
{
$data=$this->dba->get_listing(array('dl.prop_id'=>2));
echo "<pre>";
print_r($data);
echo "</pre>";
echo $data[0]->id;
echo $data[0]->title;
echo $data[0]->prop_type;
echo $data[0]->property_name;
echo $data[0]->addres;
etc....
Now loop over images and you will get all three images
foreach($data as $row):
{
echo $data->image;
}
}
我希望它会有所帮助。
答案 1 :(得分:0)
您正在寻找左连接,
public function get_listing($where)
{
$this->db->select('dl.*,pi.*,ps.*');
$this->db->from('listing as dl');
$this->db->join('property_address as ps','ps.property_add_id=dl.prop_id','left');
$this->db->join('property_images as pi','pi.listing_id=dl.prop_id','right','left');
if(!empty($where))
{
$this->db->where($where);
}
$query=$this->db->get();
return $query->result();
}