Codeigniter 2.1 - 加入一对多

时间:2012-11-27 15:13:44

标签: php codeigniter codeigniter-2

我需要表格:

图库 - > id_gallery,name,desc,data

图片 - > gallery_id,名称

一个图库可以有很多图像。我需要选择所有画廊和所有图像,并在视图页面上显示所有画廊和包含该画廊的所有图像。怎么办呢?

我现在有这样的代码:

$this->db->select('*')->from('image')->join('gallery','id_gallery = gallery_id');
$q = $this->db->get();
return $q = $q->result_array();

编辑:

<?php foreach ($gallery as $gal):  ?>
<figure>
<a href="<?php echo IMG ?>galerija/<?php echo $gal['name'] ?>/<?php echo $gal['path'] ?>" rel="galerija[slike]" class="figure_img">
<img src="<?php echo IMG ?>galerija/<?php echo $gal['naziv'] ?>/thumbs/<?php echo $gal['path'] ?>" >
<figcaption><?php echo $gal['name']; ?></figcaption>
</a>
</figure>
<?php endforeach; ?>

这个foreach循环产生5个div标签而不是一个(例如,如果图库有5个图像)。

1 个答案:

答案 0 :(得分:3)

如果要为所有图库选择图像表中的所有图像..........

$this->db->select('*');
$this->db->from('images');
$this->db->join('gallery', 'gallery.id_gallery = images.gallery_id');
$query = $this->db->get();
return $q = $query->result_array();

或以其他方式。写一个模型函数,然后在那里

public function get_images()

 {
    $res=$this->db->query("select * from images and gallery where gallery.id_gallery = images.gallery_id");
    if($res->num_rows()>0){
        return $res->result("array");
    }

    return array();

}