2012-04-24 10 views
0

私がしようとしているのは、タイトル名、データベース行のID、チャンピオンと候補の名前のタイトルのリストを含む配列を作成することです。チャンピオンと競争相手の価値については、人の名簿の名前を取得するために追加のクエリを実行する必要があります。チャンピオンの値が0だった場合は、その場所の配列にVacantを追加する必要があり、0の場合は配列のためにTBDを使用します。ここで私はどのようなクエリとprint_rの出力が含まれている作業です。クエリを使用した配列オブジェクト

私の質問は、私は "私はタイトルごとに、チャンピオンと候補のそれらの値と追加のクエリを実行する必要がどこ/どのように分からないです。

/** 
    * Get titles champions 
    * 
    * @return object/NULL 
    */ 
    function getTitlesChampions() 
    {  
     $this->db->select('titlesList.id'); 
     $this->db->select('titlesList.titleName'); 
     $this->db->select('titlesChampions.championID'); 
     $this->db->select('titlesChampions.contender1ID'); 
     $this->db->select('titlesChampions.contender2ID'); 
     $this->db->select('titlesChampions.contender3ID'); 
     $this->db->from('titlesChampions'); 
     $this->db->join('titlesList', 'titlesList.id = titlesChampions.titlesListID'); 
     $query = $this->db->get(); 
     if ($query->num_rows() > 0) { 
      echo "<pre>"; 
      print_r ($query->result()); 
      echo "</pre>"; 

     }          
    } 

Array 
(
[0] => stdClass Object 
    (
     [id] => 1 
     [titleName] => Undisputed Heavyweight Title 
     [championID] => 1 
     [contender1ID] => 1 
     [contender2ID] => 1 
     [contender3ID] => 1 
    ) 

[1] => stdClass Object 
    (
     [id] => 2 
     [titleName] => Outlaw Title 
     [championID] => 1 
     [contender1ID] => 0 
     [contender2ID] => 0 
     [contender3ID] => 0 
    ) 

[2] => stdClass Object 
    (
     [id] => 3 
     [titleName] => Tag Team Titles 
     [championID] => 1 
     [contender1ID] => 0 
     [contender2ID] => 0 
     [contender3ID] => 0 
    ) 

) 
+0

とは何ですか? – Sarfraz

+0

私はどのようにしてaddION idsを作成し、2番目のクエリを実行するか分かりません。 –

答えて

1

ベストプラクティスは、のセットです追加の結合とサブクエリがありますが、スキーマの状態が想定されている場合は、2次関数を持つのが最も簡単です。 Championsオブジェクトに戻り、追加情報を追加してください。

/** 
* Get titles champions 
* 
* @return object/NULL 
*/ 
function getTitlesChampions() 
{ 
    $this->db->select('titlesList.id'); 
    $this->db->select('titlesList.titleName'); 
    $this->db->select('titlesChampions.championID'); 
    $this->db->select('titlesChampions.contender1ID'); 
    $this->db->select('titlesChampions.contender2ID'); 
    $this->db->select('titlesChampions.contender3ID'); 
    $this->db->from('titlesChampions'); 
    $this->db->join('titlesList', 'titlesList.id = titlesChampions.titlesListID'); 
    $query = $this->db->get(); 

    if ($query->num_rows() > 0) { 

     $result = query->result(); 

     foreach($result as $row) 
     { 
      // Iterate through 
      $row->championName  = $this->getRosterName($row->championID); 
      $row->contender1Name = $this->getRosterName($row->contender2ID); 
      $row->contender2Name = $this->getRosterName($row->contender2ID); 
      $row->contender3Name = $this->getRosterName($row->contender3ID); 
     } 

     // Return it 
     return $result; 

    } 
    return null; 
} 

/* 

/* Returns the name */ 
function getRosterName($rosterId = null) 
{ 

    if($rosterId && $rosterID > 0) 
    { 
     $this->db->select('RosterName'); 
     $this->db->where('rosterId', $rosterId); 
     $query = $this->db->get('roster'); // Or whatever your `roster` table is named. 
     return $query->row()->firstName; // Or whatever the name is you want returned 
    } 
    return null; 
} 

私はあなたのスキーマについて何も知らないので、これは暗闇の中のショットです。

幸運。

+0

問題は、値が0の場合、私はそれを取得しようとしています。 –

+0

getRosterName関数を変更しました。値が0の場合、名前に 'null'を返します。 – Seabass

関連する問題