2012-02-12 50 views
0

我一直在CodeIgniter中竊取一週左右,僅僅是因爲我沒有理解RoR的能力。我已經設法創建了一些基本的模型,視圖和控制器,但是現在我已經開始考慮到我正在使用多個模型的事實。基本的CodeIgniter/SQL概念 - 用一個表中的數據替換另一個表中的數據

我的問題可能與基本的SQL有關,但我期望CodeIgniter中有功能允許返回的行將某些數據字段替換爲來自其他表的信息。如果我知道這個概念在SQL中被稱爲什麼,那麼我至少知道該在Docs中尋找什麼,但我只是一個初學者。我想至少在這裏有一些基本的知識,所以我可以詳細閱讀。

例如,假設我有一個公司表(公司模型),它只有兩個字段,'id'設置爲主鍵,'Company_name'爲varchar。另外,假設我有一個商店表(商店模型),它有四個字段,如'address','id'(主鍵)和company_id,它是公司表中的索引。

該公司可能是這樣的:

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

這些商店可以是這樣的:

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 

凡CompanyID領域涉及的表背到公司表。

如果我做笨一個基本的查詢返回所有「商店」爲:

$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 2012-02-12 03:57:31

+0

只需跟進一下你的建議解決方案。爲什麼選擇company.Company_name命令?我們正在從沒有company_name字段的商店表中獲取字段,我們後來說我們正在使用第二行中的「商店」表。這有點奇怪。 – panagioti 2012-02-12 04:02:04

+0

儘管自己編寫查詢在這個上下文中沒問題,因爲查詢不使用任何__user控制的內容___,如果查詢是使用任何__user控制的內容__構建的,那麼最好是讓代碼點火器爲您構建查詢,因爲它會處理逃逸等。 – Hailwood 2012-02-12 04:21:36

相關問題