2010-02-09 3 views
2

Это моя модель:Codeigniter Регистрация Проблемы базы данных

function getGalleryListing() 
{ 
    $this->db->select('photo.id,photo.src,photo.title,photo.user_id,users.id,users.username'); 
    $this->db->from('photo'); 
    $this->db->join('users', 'users.id = photo.user_id'); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

И мой контроллер:

function index() 
{  
    $data['gallery_list'] = $this->Gallery_model->getGalleryListing(); 
    $data['content'] = $this->load->view('gallery/index', $data, true); 
    if ($this->dx_auth->is_logged_in()) 
    { 

     $this->load->view('template_login', $data); 
    } 
    else 
    { 
     $this->load->view('template', $data); 
    } 

} 

Проблема заключается в том, когда я <?= $gallery->id ?>, он продолжает показывать мне удостоверение личности с USERS.ID вместо от PHOTO.ID. Я что-то пропустил? Спасибо за любую помощь.

ответ

2

Вы выбираете две идентификаторы (от фото и пользователей), и отображается только более поздняя. Вам нужно использовать псевдоним с As, чтобы назначить другое имя для одного из идентификаторов, и таким образом он успешно покажет вам требуемый идентификатор. Например, запрос должен выглядеть следующим образом:

select (photo.id) as photo_id,photo.src,photo.title,photo.user_id,users.id,users.username from photo inner join users on users.id = photo.user_id 

Теперь <?= $gallery->photo_id ?> даст вам идентификатор фотографии и <?= $gallery->id ?> даст вам USERID.

Примечание: Вы можете изменить вышеуказанный запрос в перспективе CI или использовать как есть, если сможете. Благодаря

+0

Спасибо за работу отлично – GeekSean

+0

@GeekSean: Это отличная новость тогда :) – Sarfraz

0

Я использую DataMapper OverZealous Edition
Если пользователь имеет один ко многим отношений объявлен к фотографии, то вы должны использовать следующее:

Внутри модели пользователя:
$this->photo->get()->all

Иначе что-то вроде:
$user = $this->user->where('id', 1)->first();
$photos = $user->photo->get()->all;

На стороне примечания, вы уверены, что таблица не называется фотографией, а не фо до

+0

Спасибо, попробуем в следующем проекте :) – GeekSean

0

Во многих случаях, когда я сталкивался с проблемами с использованием функции JOIN CodeIgniter, я закончил писать свою собственную команду SQL, если вы знакомы с SQL. Это дает вам лучший контроль, чем сама функция соединения.

Смежные вопросы