0

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

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

更新

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

4

1 回答 1

0

通常,您不会对 DMZ 模型进行手动连接(尽管如此,生成的 sql 仍将使用连接)。您正在寻找的东西是关系

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

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

  1. where_related用于当您想要过滤您正在查询的某些相关模型的字段值的模型时。因此,如果您的班级有相关project设置Example,则可以编写->where_related('project', 'procure', false);它将Example根据相关项目的过程字段过滤返回的实例。所以基本上它与您放入whereSQL 子句的条件相同。

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

为每个命名关系和许多其他选项创建了魔术方法,我建议您参考文档的Get (Advanced)页面以开始并自由探索描述关系的其他 页面

于 2013-04-13T18:52:27.740 回答