桌子

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])

问题是当我
select(table.*,work.name as work,owners.name as owner) from table

它自动处理连接,因为该表已经包含fk ref?或者我必须包括codeigniter
实际上,我想要的是,当我选择一个包含fk的表时,这个fk列将替换为ref row中的一列,只需在ref table上传递列名,而不必担心在模块中为每个查询创建特定的函数。
我目前的解决方案:
本来要为每个包含关系的表创建一个视图,并用所需的ref值替换所有fk列,但是由于我有6个表,其中5个表是fk,所以我现在在db中有6个表和5个视图(11个表),这对我来说真的很混乱,所以有什么更聪明的方法来做到这一点吗?

最佳答案

我想你是在混淆FK是什么,它在一张桌子里做什么。
FK约束在表中存在并关联数据时授予数据完整性。它不加入任何东西。
如果要跨相关表选择记录,可以使用

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


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

是的,你需要告诉CodeIgniter去做那些查询

关于php - Codeigniter的数据库->选择句柄MySQL自动加入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14335819/

10-13 09:51