2010-02-09 8 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에서 ID를 보여주는 유지하다 PHOTO.ID. 내가 뭔가 빠뜨린거야? 어떤 도움을 주셔서 감사합니다.

답변

2

두 개의 ID (사진 및 사용자)를 선택하고 나중에 만 표시됩니다. As과 별칭을 사용하여 ID 중 하나에 다른 이름을 지정해야합니다. 이렇게하면 필요한 ID가 성공적으로 표시됩니다.

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 ?> 당신이 용자 ID 줄 것이다 : 예를 들어, 쿼리는 다음과 같아야합니다.

참고 : 위의 쿼리는 CI의 관점에서 수정하거나 가능한 경우 그대로 사용할 수 있습니다.
$this->photo->get()->all

그렇지 않으면 뭔가 같은 :
$user = $this->user->where('id', 1)->first(); 사용자 모델 내부

: 사용자가 많은 관계로 한 다음 사용해야 후 사진에 선언 된 경우 감사

+0

완벽하게 감사합니다. – GeekSean

+0

@GeekSean : 좋은 소식입니다. :) – Sarfraz

0

나는 DataMapper OverZealous Edition
를 사용
$photos = $user->photo->get()->all;

주목할 점은 테이블이 포토가 아니라 사진이라고 생각합니까? to

+0

고마워요. 다음 프로젝트에서 시도해 보겠습니다. :) – GeekSean

0

CodeIgniter의 JOIN 기능을 사용하여 문제가 발생하는 경우가 많은데, SQL에 익숙하다면 제 SQL 명령을 직접 작성한 것입니다. 그것은 조인 함수 자체보다 나은 제어를 제공합니다.

관련 문제