代码点火器datamapper join get()

时间:2013-04-12 05:29:43

标签: codeigniter datamapper

我在我的代码点火器模型中使用此连接

 $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);

更新

你能告诉我使用数据映射器连接三个表的片段吗?

1 个答案:

答案 0 :(得分:0)

通常,您不会手动使用DMZ模型进行连接(生成的sql将使用连接)。你要找的东西是Relations

您必须使用$has_one$has_many属性设置模型的关系,保留命名约定,为多对多创建必要的表等等。您可以在文档herehere中阅读相关内容。

设置模型后,您可以使用之前使用过联接的where_relatedinclude_related方法:

  1. where_related 用于过滤要查询某些相关模型字段值的模型。因此,如果您在project课程中设置了相关Example,则可以撰写->where_related('project', 'procure', false);它将根据相关项目的过程字段过滤返回的Example个实例。所以基本上它与你在where SQL子句中的条件相同。

  2. include_related 适用于您想要包含相关模型甚至整个实例的字段的时间。因此,如果在查询->include_related('project', 'projects')实例时编写Example,则最终会在返回的实例上使用project_projects属性。有许多选项可以控制如何创建这些属性。基本上这些是您将放入select SQL子句的字段。

  3. 为每个命名关系和许多其他选项创建了魔术方法,我引用您的文档的Get (Advanced)页面开始并免费探索other pages {{ 3}} describing