我在我的代码点火器模型中使用此连接
$this->db->select('e.name, p.projects');
$this->db->from('example as e');
$this->db->join('procure as p', e.id = p.id');
$this->db->where('e.cityid', '1');
$this->db->where('e.status', '0');
我没有单独的表格来加入。这是我的数据映射器,这不提供任何输出。
我有两个表,我想在它们上写一个连接查询。我在我的控制器中有这个。
$example = new Example();
$example ->where_join_field('procure', FALSE);
更新
你能告诉我使用数据映射器连接三个表的片段吗?
答案 0 :(得分:0)
通常,您不会手动使用DMZ模型进行连接(生成的sql将使用连接)。你要找的东西是Relations。
您必须使用$has_one
和$has_many
属性设置模型的关系,保留命名约定,为多对多创建必要的表等等。您可以在文档here和here中阅读相关内容。
设置模型后,您可以使用之前使用过联接的where_related
和include_related
方法:
where_related 用于过滤要查询某些相关模型字段值的模型。因此,如果您在project
课程中设置了相关Example
,则可以撰写->where_related('project', 'procure', false)
;它将根据相关项目的过程字段过滤返回的Example
个实例。所以基本上它与你在where
SQL子句中的条件相同。
include_related 适用于您想要包含相关模型甚至整个实例的字段的时间。因此,如果在查询->include_related('project', 'projects')
实例时编写Example
,则最终会在返回的实例上使用project_projects
属性。有许多选项可以控制如何创建这些属性。基本上这些是您将放入select
SQL子句的字段。
为每个命名关系和许多其他选项创建了魔术方法,我引用您的文档的Get (Advanced)页面开始并免费探索other pages {{ 3}} describing。