Разработка фотоальбома с использованием codeigniter, запрос на выбор изображений? - PullRequest
0 голосов
/ 29 апреля 2018

Я занимаюсь разработкой веб-приложения с использованием codeigniter. Там я делаю часть, чтобы показать изображения, как в Facebook, как этот скриншот. image1

Для этого я создал две таблицы базы данных. Для сохранения имен альбомов с идентификатором пользователя. Для сохранения имен изображений с идентификатором альбома. Здесь я предоставляю скриншот двух таблиц. image1

image2

У меня много альбомов в таблице альбомов для одного пользователя. Теперь я ввел только одну информацию в эту таблицу только для теста. Как можно выбрать только одно изображение из одного альбома, чтобы создать вид альбома, как в 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();

Как улучшить этот код, чтобы выбрать только одно изображение из каждого альбома и передать все детали этого изображения, такие как идентификатор изображения, идентификатор альбома, имя альбома, имя изображения в представление?

1 Ответ

0 голосов
/ 29 апреля 2018

попробуйте

$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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...