2017-01-15 6 views
1

私は、このモデルを持っている:CodeIgniterを使用してテーブルエイリアスのlist_fieldsを取得するにはどうすればよいですか?

public function listar_jogos_fase($id_fase) { 
    $this->db->select('fas.nome as `fase`, jogos.numero as `jogo`, jog1.nome as `jogador1`, jog2.nome as `jogador2`, jogos.data as `data`, jogos.hora as `hora`, jogos.local as `local`', FALSE); 
    $this->db->from('jogos'); 
    $this->db->join('jogadores as jog1', 'ON jog1.id = jogos.jogador1'); 
    $this->db->join('jogadores as jog2', 'ON jog2.id = jogos.jogador2'); 
    $this->db->join('fases as fas', 'ON fas.id = jogos.fase'); 
    $this->db->where('fase',$id_fase); 
    $dados['dados'] = $this->db->get()->result(); 
    $dados['colunas'] = $this->db->list_fields('jogos'); 
    return $dados; 
} 

だから私は私のエイリアステーブルの一部だけ選択されたフィールドで、この結果を受け取りたい:

 
fase  jogo jogador1  jogador2    data  hora   local 
1° Fase 1  Andy Murray  Juan Martin del Potro 2017-01-19 16:30:00 Roland Garros, Paris - Quadra 1 
1° Fase 2  Novak Djokovic Roger Federer   2017-01-19 16:30:00 Roland Garros, Paris - Quadra 2 

しかし、私は、この他を受けています私のテーブルのすべてのフィールド:

 
id  fase numero   jogador1    set1_jg1 set2_jg1 set3_jg1      set4_jg1 set5_jg1 jogador2 set1_jg2 set2_jg2 set3_jg2 set4_jg2 set5_jg2 data hora local 
1° Fase 1  Andy Murray  Juan Martin del Potro 2017-01-19 16:30:00 Roland Garros, Paris - Quadra 1 
1° Fase 2  Novak Djokovic Roger Federer   2017-01-19 16:30:00 Roland Garros, Paris - Quadra 2 

誰かが私を助けてくれますか? ありがとうございました!私がいることを使用する場合

[OK]を、@Baktiウィジャヤ... :私は

public function listar_jogos_fase($id_fase) { 
    $dados['dados'] = $this->db->query(
     "SELECT  
      d.nome fase, 
      a.numero jogo, 
      b.nome jogador1, 
      c.nome jogador2, 
      a.data data, 
      a.hora hora, 
      a.local local 
     FROM jogos a 
      JOIN jogadores b ON a.id = b.id 
      JOIN jogadores c ON a.id = c.id 
      JOIN fases d ON a.fase = d.id 
     where fase=$id_fase" 
    )->result_array(); 

    $dados['colunas'] = $this->db->list_fields('jogos'); 

    return $dados; 
} 

つもりはこれを受け取る:

Array 
(
    [dados] => Array 
     (
      [0] => Array 
       (
        [fase] => 1° Fase 
        [jogo] => 1 
        [jogador1] => Andy Murray 
        [jogador2] => Andy Murray 
        [data] => 2017-01-19 
        [hora] => 16:30:00 
        [local] => Roland Garros, Paris - Quadra 1 
       ) 

      [1] => Array 
       (
        [fase] => 1° Fase 
        [jogo] => 2 
        [jogador1] => Novak Djokovic 
        [jogador2] => Novak Djokovic 
        [data] => 2017-01-19 
        [hora] => 16:30:00 
        [local] => Roland Garros, Paris - Quadra 2 
       ) 

     ) 

    [colunas] => Array 
     (
      [0] => id 
      [1] => fase 
      [2] => numero 
      [3] => jogador1 
      [4] => set1_jg1 
      [5] => set2_jg1 
      [6] => set3_jg1 
      [7] => set4_jg1 
      [8] => set5_jg1 
      [9] => jogador2 
      [10] => set1_jg2 
      [11] => set2_jg2 
      [12] => set3_jg2 
      [13] => set4_jg2 
      [14] => set5_jg2 
      [15] => data 
      [16] => hora 
      [17] => local 
     ) 

) 

だから、私はこれを操作する方法を知っています結果...
しかし、エイリアステーブルフィールドの名前を取得するために、可能であればCodeIgniterの$ this-> db-> list_fields()を使用したいと考えています。
$ this-> db-> list_fields( 'jogos')を使用すると、配列[列]でわかるように元のテーブル 'jogos'のすべてのフィールドを受け取ります...
しかし私すべてのフィールドが必要なわけではありません。[データ]配列に返される7つのフィールドは[fase]、[jogo]、[jogador1]、[jogador2]、[data]、[hora]、[local] ...
私は$ this-> db-> list_fields( 'a')のようなものを使用したいと思います。 'a'は元のテーブル 'jogos'のエイリアスです...
しかし、その$ this-> db-> list_fields( 'a')を使用すると、私はこのエラーになります:

 

    Error Number: 42S02/1146 

    Table 'tennis.a' doesn't exist 

    SHOW COLUMNS FROM `a` 

    Filename: C:/wamp64/www/tennis/system/database/DB_driver.php 

    Line Number: 691 

「これはできません!容認できる答えでもあります。
ご注意いただきありがとうございます!

+0

'ますprint_r($ DADOS [ 'DADOS']);'出力は何ですか? –

答えて

0

これを試してみてください:

public function listar_jogos_fase($id_fase) 
{ 
     $this->db->query("SELECT 
     fas.nome fase, 
     a.numero jogo, 
     b.nome jogador1, 
     c.nome jogador2, 
     a.data data, 
     a.hora hora, 
     a.local local 
     FROM jogos a 
     JOIN jogadores b ON a.id = b.id 
     JOIN jogadores c ON a.id = c.id 
     JOIN fases d ON a.fases = d.id 
     where fase=$id_fase")->result_array(); 
} 
関連する問題