我正在使用codeigniter开发一个Web应用程序。在那里,我正在制作一个部分来显示像facebook这样的截图。
为此,我创建了两个数据库表。一个用户名id保留相册名称。一个用于保持图像名称与相册id。这里我提供两个表的截图。
我在专辑表中为一个用户提供了很多专辑。现在我只为test.h输入了一个数据。我可以从一个专辑中只选择一个图像来创建专辑视图,就像在Facebook中一样希望我有在这个问题的顶部显示为screenshot.I在模型中创建这样的查询以选择图像。
$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,album_id,album_name,image_name)传递给视图?
答案 0 :(得分:0)
试试这个
$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)