2011-12-29 13 views
0

誰かがこれを手伝ってくれることを願っています。私はPHPをしばらく使用していましたが、Codeigniterを初めて使用しました。Codeigniterの前のクエリの結果に基づいてクエリを実行します。

基本的に私は2つの別々のデータベースに '写真'と 'ユーザー'という2つのテーブルを持っています。 「写真」には、ユーザーが表示したい写真に関する情報が含まれており、「ユーザー」にはその写真を所有しているユーザーの情報が含まれています。ここで

は、コードは次のとおりです。

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Viewphoto_model extends CI_Model { 


    public function get_photo($id) 
    { 
     $db_photos = $this->load->database('photos', TRUE); 
     $db_photos->select('*'); 
     $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE); 
     $db_photos->from('photos'); 
     $db_photos->where('approved', '1'); 
     $db_photos->where('id', $id); 

     $query = $db_photos->get(); 
     return $query->row(); 
    } 
} 

だから基本的には、ユーザーがURLにenteres IDに基づいて、データベース上の行をつかみます。

正常に動作します。

「写真」テーブルの各行には、「ユーザー」データベース/テーブルの行のID番号であるユーザーID番号があります。私は '写真'テーブルの行のID番号に基づいて 'users'テーブルから関連行を取得できるようにしたいと思います。

私は答えを見つけようとしていますが、まだ運がありませんでした。 2つのデータベース間で結合を行うか、get_photo関数から2番目のクエリを実行する2番目の関数に値を渡しますか?どのようにそれを行うことができますか?

私はそれを行うと考えていた方法は、最初のクエリの結果からuserid値を取得し、2番目の関数の2番目のクエリに入れますか?それ、どうやったら出来るの?

任意の助けが最も高く評価され:)

感謝を!

答えて

1

これは理論的にはうまくいくはずですが、コードシンターARではあまり実践されていません。

$db_photos->select(
     "u.*, DATE_FORMAT(p.uploaddate, '%d/%m/%y') as uploaddate_formatted" 
     , FALSE); 
$db_photos->from('photos as p'); 
$this->db->join('users as u', 'u.id = p.user_id', 'left'); 

はあなたの句...

NOTE {ユーザーを見つけることがない場合には、その後、そのフォトのが含まれていますか? }

テーブルこの

//Should work Provided!! Configs are in this Order 
//$db['photos'][''] 
//$db['default'][''] 


//First Query (Users) 
$q1 = $this->db->get_where('users', array('id'=>$id)); 


//Second Query (photos) 
$db_photos = $this->load->database('photos', TRUE); 
$q2 = $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE) 
        ->from('photos') 
        ->where('approved', (int)1); 
        ->where('userid', $q1->row()->id) 
        ->get(); 

var_dump($q1); 
var_dump($q2); 

//you job now is to build and object/array of the combined queries 
//I dont know enough about the outcome to make those judgments 
+0

を試すかの別々のデータベース上にある、どのように私は2つのデータベースにある2つのテーブルに参加することができますか? –

+0

codeigniterが複数のデータベース接続を許可するかどうかわからない場合は、新しいデータベース設定ルールセットを追加してみてください。 $ config ['connection2'] ['...'] – Philip

+0

ええ、2番目のデータベースの2番目のデータベース値を既に作成しています設定ファイル内にあります。私は、テーブルを結合する方法、あるいは最初のクエリの 'userid'フィールドから値を取得して、2番目の関数で2番目のクエリで使用する方法を理解できません。 –

関連する問題