我一直在乱砍CodeIgniter一个星期左右,只是因为我没有能力理解RoR。我已经设法创建了一些基本的模型,视图和控制器,但我现在正处于一个我必须开始考虑我使用多个模型的事实。
我的问题可能与基本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字段将表格与公司表格相关联。
如果我在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 :(得分: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");