【问题标题】:Codeigniter 2.1 - join one to manyCodeigniter 2.1 - 加入一对多
【发布时间】:2012-11-28 01:25:52
【问题描述】:

我必须要桌子:

图库 -> id_gallery、名称、描述、数据

和:

图片 -> 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 张图片)。

【问题讨论】:

  • 您需要引用联接中的表吗? gallery.gallery_id = image.id_gallery
  • 我做到了,没有区别。目前情况如下:如果图库有 5 张图片,它会创建 5 个 div 标签,并且只需要创建一个。
  • 嗯,这是你的循环结构而不是 sql 的问题!
  • Sasha 试试我的答案,让我知道............
  • @Dale 我已经编辑了问题。有什么推荐吗?

标签: php codeigniter codeigniter-2


【解决方案1】:

如果你想从所有画廊的图像表中选择所有图像............

$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();

}

【讨论】:

  • 我这样做了,它正在工作,但我仍然有分切机问题。我将编辑问题。
  • 例如,如果画廊有 5 张图片,它将生成 5 个 div 标签,我只需要一个,我将在其中显示该画廊的所有图片,
  • 然后在你得到数组中模型文件的结果后做一件事。将其传递给查看文件,并在 div 标签之间编写一个循环以显示该画廊中的所有图像....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多