2012-02-12 5 views
0

私はRoRを理解する能力がないため、CodeIgniterを1週間ほどハッキングしています。私はいくつかの基本的なモデル、ビュー、コントローラを作成することに成功しましたが、私は複数のモデルを使用しているという事実を検討しなければなりません。基本CodeIgniter/SQLの概念 - あるテーブルのidを別のテーブルのデータに置き換えます

私の質問は基本的なSQLに関連しているかもしれませんが、CodeIgniterには、返された行に特定のデータフィールドを他のテーブルの情報で置き換える機能があることが期待されます。このコンセプトがSQLで呼び出されたことが分かっていれば、Docsで何を探すべきかを少なくとも知っていましたが、私は初心者です。私はここにいくつかの基本的な知識を持っていたいので、詳細を読むことができます。

たとえば、プライマリキーとして 'id'が設定され、varcharの 'Company_name'というフィールドが2つしかない会社表(会社のモデル)があるとします。また、「住所」、「ID」(プライマリキー)、companyテーブルのインデックスであるcompany_idの4つのフィールドを持つストアテーブル(店舗モデル)があるとします。

企業IDフィールドは、バックの企業のテーブルにテーブルを関連付ける
ID Store_name Address   Company_ID 
------------------------------------------------ 
1  StoreA  12 Main St.  1 
2  StoreB  33 First Ave. 1 
3  StoreC  9 Broad Rd.  2 
4  StoreD  873 Wide Blvd. 3 
5  StoreE  8103 Water St. 1 

:店のようなものかもしれない

ID Company_name 
------------------------------------------------ 
1  CompanyA 
2  CompanyB 
3  CompanyC 

企業のようなものである可能性があります。

私はすべての「店舗」として返すためにCodeIgniterの中に基本的なクエリを実行する場合は、次の

$this->db->get('stores'); 

を、私は、行によって結果行を通過することができるようになりますが、のcompany_idフィールドは、まだ単なる指標になります値。 Company_IDフィールドが、返された結果の会社テーブルの適切な会社名によって自動的に置き換えられるようなクエリを実行する方法はありますか?簡単な実世界の例では、親会社またはそのような何かに属するファストフードチェーン店だろう

Store Name Address   Company Name 
------------------------------------------------ 
StoreA  12 Main St.  CompanyA 
StoreB  33 First Ave.  CompanyA 
StoreC  9 Broad Rd.  CompanyB 
StoreD  373 Wide Blvd. CompanyC 
StoreE  8103 Water St. CompanyA 

:アイデアは、私は、以下のいずれかのように見える結果のテーブルを作成したいということでしょう。

これをどのように説明するかわかりません。 :/

答えて

0

あなたが探しているのはSQL結合です。このようにCodeIgniterで行うことができます。

$this->db->select("stores.Store_name, stores.Address, companies.Company_name"); 
$this->db->from("stores"); 
$this->db->join("companies", "companies.ID=stores.Company_ID"); 
$query = $this->db->get(); 

個人的には、私は自分でクエリを書くことを好みます。

$query = $this->db->query("select stores.Store_name, stores.Address, companies.Company_name from stores inner join companies on companies.ID=stores.Company_ID"); 
+0

ありがとうございます。私はジョインに目を通すつもりです。少なくとも今、私はこの概念が何であるかを知っています。 – panagioti

+0

あなたの提案された解決策についてただ1つのフォローアップ。企業の選択コマンドはなぜですか?Company_name? company_nameフィールドを持たないstoresテーブルからフィールドを取得しており、2番目の行に 'stores'テーブルを使用していると次に言います。それは少し奇妙です。 – panagioti

+0

クエリーが__userの制御されたcontentを使用していない場合は、このコンテキストで自分でクエリーを書くことはできますが、__userの制御されたcontent__を使用してクエリーが構築されていれば__それからコードイグナイターを取得して、エスケープ処理など – Hailwood

関連する問題