开发相册使用codeigniter,查询选择图片?

bvjxkvbb  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(236)

我正在开发一个使用codeigniter的web应用程序。在那里,我正在制作一个部分来显示像facebook上的图片作为这个屏幕截图。

为此,我创建了两个数据库表。一个用用户id保存相册名称。一个用相册id保存图像名称。这里我提供了两个表的屏幕截图。


我在相册表中有很多相册供一个用户使用。现在我只在这个表中输入了一个数据,只是为了测试。我如何才能从一个相册中只选择一个图像来创建相册视图,就像在facebook中希望我在这个问题的顶部显示为屏幕截图一样。我在模型中创建了这样的查询来选择图像。

$username=$this->session->userdata('username');
         $this->db->select('id');
         $this->db->where('email',$username);
         $query=$this->db->get('user');
         foreach ($query->result() as $row)
         {
             $user_id= $row->id;

         }

         $this->db->select('*');
         $this->db->where('album_images.user_id',$user_id);
         $this->db->from('album_images');
         $this->db->join('album', 'album.id = album_images.album_id');

         $query = $this->db->get();
         return $query->result();

如何改进此代码以从每个相册中仅选择一个图像,并将该图像的所有详细信息(如图像id、相册id、相册名称、图像名称)传递给视图?

qkf9rpyu

qkf9rpyu1#

试试这个

$this->db->select('uai.album_id, ua.album_name, uai.id as image_id, uai.image_name');
$this->db->from('user as u');
$this->db->join('album as ua', 'ua.user_id = u.id', 'left');
$this->db->join('album_images as uai', 'uai.user_id = u.id AND uai.album_id = ua.id', 'left');
$this->db->where('u.email',$this->session->userdata('username'));
$this->db->group_by('uai.user_id, uai.album_id');
$this->db->order_by('ua.album_name ASC');
$query = $this->db->get();
return ($query->num_rows() > 0) ? $query->result() : false;

输出如下

Array
(
    [0] => stdClass Object
        (
            [album_id] => 1
            [album_name] => Apple
            [image_id] => 1
            [image_name] => Apple1.jpg
        )

    [1] => stdClass Object
        (
            [album_id] => 2
            [album_name] => Orange
            [image_id] => 3
            [image_name] => Orange1.jpg
        )

)
``` `image_name` 将从返回一个图像 `album_images` 表

ex. [image_name] => Apple1.jpg from (Apple1.jpg,Apple2.jpg,Apple3.jpg ..etc)

相关问题