2017-12-01 11 views
0

ゲストと呼ばれるテーブルが1つあります。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

あなたは1つのクエリからそれを得ることはできません。クエリはX列とX列を返します。しかし、それは多次元配列として表現することはできません。

あなたはここで2つのオプションがあります。

1:その後、(それぞれのために)それを反復し、その「plus_oneは」その子をもたらすためにメソッドを呼び出した場合(plus_one含む)ゲストのリストを取得します。

または...(しないように、かなり)

2:(あなたがやっていたように)自身とあなたのテーブルに参加して、すべての子プロパティのエイリアスを設定します。このような 何か:

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

しかし、再び、ここでの結果は、多次元配列ではないでしょう。すべてのデータが1行だけ表示されます。 (またはヌル)。私は最初に行くだろう。

関連する問題