1

桌子

ID|owner_id|work_id|lorem|etc|
1 |00123   | 00213 |XXXXX|XXX|
2 |00124   | 00213 |XXXXX|XXX|

owner_id (fk) owners.id (owners[id,name,etc])

work_id (fk) work.id (work[id,name,etc])

问题是我可以设置codeigniter,当我

select(table.*,work.name as work,owners.name as owner) from table

它会自动处理连接,因为该表已经包含 fk-ref ?或者我必须包括join('owner','owner.id=table.owner_id)

实际上我想要的是,当我选择一个包含 fk 的表时,只需在 ref 表上传递列名,这个 fk 列就会被 ref 行中的一列替换,而不必担心在我的模块中为此创建特定函数每个查询。

我目前的解决方案:

是为每个包含关系的表创建一个视图,并用所需的 ref 值替换所有 fk 列,但是由于我有 6 个表,其中 5 个用 fk,我现在在 db 中有 6 个表和 5 个视图(11 个表),即对我来说真的很困惑,所以有什么更聪明的方法吗?

4

1 回答 1

1

我认为您对 FK 是什么以及它在表格中的作用感到有些困惑。

FK 约束在数据存在时授予数据完整性并关联表中的数据。它不加入任何东西。

如果要跨相关表选择记录,可以使用

SELECT * FROM table1,table2 WHERE table1.K1 = table2.FK1

或者

SELECT * FROM table1 JOIN table2 ON table1.K1 = table2.FK1

是的,您需要告诉 CodeIgniter 进行这些查询

于 2013-01-15T10:43:57.547 回答