【发布时间】:2013-01-15 10:33:48
【问题描述】:
表格
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,我现在有 6 个表和 5 个视图(11 个表) db 这对我来说真的很困惑,所以有什么更聪明的方法吗?
【问题讨论】:
-
如果是这样,那么设置关系的唯一实际好处就是级联动作!否则,我可以先执行 2 个单独的选择查询以获取主行,然后使用简单的 where id=fk 获取所需的参考值!对吗?
-
或者您可以使用一个连接语句在一个查询中同时完成这两个操作
标签: php mysql codeigniter activerecord left-join