2017-12-01 3 views
0

나는 guests라는 테이블 하나를 가지고 있습니다.CodeIgniter가 같은 테이블에서 가입

손님은 guest 또는 plus_one 일 수 있습니다.

plus_one 인 경우 plus_oneguest에 master_id로 연결됩니다. id 열은 자동으로 증가합니다.

id master_id type 
1 1   guest 
2 1   plus_one 
3 3   guest 
4 3   plus_one 
5 5   guest 
6 6   guest 

쿼리의 결과가 각 고객에 대한 배열로 배열하고, 그 참가자가 master_id 통해 연결된 plus_one있는 경우가 예상 갖는 서브 어레이와 같은 것이다. 알아낼 수 없습니다 또한

[0] 
    ['id'] => 1 
    ['master_id'] => 1 
    ['type'] => guest 
    ['plus_one'] => // This is a sub array 
    ['id'] => 2 
    ['master_id'] => 1 
[1] 
    ['id'] => 3 
    ['master_id'] => 3 
    ['type'] => guest 
    ['plus_one'] => // This is a sub array 
    ['id'] => 4 
    ['master_id'] => 3 
[2] 
    ['id'] => 5 
    ['master_id'] => 5 
    ['type'] => guest 
[3] 
    ['id'] => 6 
    ['master_id'] => 6 
    ['type'] => guest 

내가 가입 내가 자기를 할 필요가 있다고 생각하지만, 나는 밖으로하는 방법을 알아낼 수 없습니다 및 :

위의 표를 가지고 가서, 그것은 다음과 같이 (간체)한다 그 결과로 하위 배열을 가져 오는 방법. 내가 뭘 시도 :

$this->db->from('guests a'); 

$this->db->join('guests b', 'a.master_id = b.master_id', 'left outer'); 

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

답변

0

당신은 하나의 쿼리에서 얻을 수 없습니다. 쿼리는 X 열이있는 X 행을 반환합니다. 그러나 다차원 배열로 표현할 수는 없습니다.

1 :

는 현재 두 가지 옵션이 다음 (각의에서)을 반복 (plus_one 포함) 손님의 목록을 가져옵니다을하고 "plus_one은"자식을 가져 오는 메소드를 호출합니다.

또는 (하지 않는 것이 꽤)

2 : (당신이하고있는 것처럼) 자체 테이블을 가입하고 모든 어린이 속성에 대한 별칭을 설정합니다. 이 같은 뭔가 :

SELECT 
    a.*, 
    b.id as plus_one_id, 
    b.master_id as plus_one_master_id 

그러나 다시, 여기에 결과는 다차원 배열되지 않을 것입니다. 모든 데이터가있는 행. (또는 nulls). 나는 처음으로 갈거야.

관련 문제