问题标签 [codeigniter-datamapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
594 浏览

codeigniter - Codeigniter Datamapper另存为新ID

我是数据映射器的新手。我在尝试将结果复制到新 ID 时遇到问题。

这是我的数据库的简化表:

工作表

属性表


如何自动将基于作业 ID 1 的新作业复制到新作业/属性 ID 中,例如

工作表

属性表

感谢您的帮助!:)

0 投票
2 回答
726 浏览

codeigniter - 使用 codeigniter 和 datamapper 过滤结果集

我在使用 datamapper 时遇到了一点问题,我想知道是否有快速的解决方案。假设我有这种数据

组表

在我的基本控制器中,我设置了一个全局字段以仅查看非管理员组

现在在我的控制器中,我想过滤组。例如,我只想选择编辑和客人(id 介于 1 和 4 之间)。所以我想过滤初始结果集......像这样

但它不起作用。它返回所有组 id < 4,包括管理员。得到这个的正确方法是什么?

0 投票
1 回答
814 浏览

codeigniter - 从有关系的表中获取数据

我正在用 CodeIgniter 和 DataMapper 写简单的博客,但我遇到了关系问题。如何使用 DattaMapper 通过特定标签获取帖子。SQL 查询将是这样的:

php代码:

数据库方案:

在此处输入图像描述

有什么建议么?

0 投票
3 回答
437 浏览

codeigniter - 使用 Datamapper ORM 保存表关系

我是对象模型映射的新手,刚刚阅读了 CodeIgniter DataMapper 的文档。我已经尝试了这些例子,我对一个人能用很少的时间取得很多成就印象深刻。

但我似乎没有解决一个问题:

假设我有两个表:客户和地址。一个客户可以有多个地址,但我只能处理一个客户。

现在,我有一个注册表单,其中新客户必须输入存储在客户表中的个人数据和存储在地址表中的地址。

验证在特定模型中完成。我的问题是如何在将两个表保存到数据库之前确保数据对它们都有效。

目前,客户可能为客户表输入了正确的数据,该数据验证并保存到 db,但地址数据未验证且未保存。

简而言之:如果所有表的数据都验证,我只想将任何表的数据保存到 db,否则我想获取错误消息。

感谢您提前提供任何帮助。

0 投票
1 回答
314 浏览

codeigniter - 如何在 CodeIgnitor 的 DataMapper ORM 中设置超类型和子类型关系?

我正在运行一个在线食品杂志,用户可以在其中记录日记条目。有四种类型的条目:食物条目、运动条目、测量和完成的任务。条目有几个共同的属性(例如,id、amount、unit_id 等),但它们也有特定于类型的属性(例如,food_id、exercise_id 等)。这是超级和子类型关系的完美候选者。

这是我的表格(简化):

所以我的问题是,如何使用 CodeIgniter 的 DataMapper ORM 设置超类型和子类型关系?我查看了用户指南的关系和高级关系部分,但找不到任何东西。

如果 DataMapper 无法实现,我可以想到一些解决方案:

  1. 向上滚动子类型属性(1个大表,呃)
  2. 向下滚动超类型属性(4 个单独的表,呃)
  3. 去核并使用 Doctrine 2.0 ORM(YAML 配置文件,啊!)
  4. 使用其原生 ORM 支持表继承的不同框架(我将 Kohana 和 FuelPHP 与 CodeIgniter 列入候选名单)。
  5. 手动编码超类型和子类型关系(首先破坏了 ORM 的目的)。

我对我的任何选择都不感到兴奋。选项 1 和 2 会让人头疼(请参阅本文底部。选项 3 似乎是用大锤进行的手术。我对选项 4 持开放态度,因为我还没有开始编写任何框架代码(这是 CI 和 Kohana 之间的一个非常艰难的选择)。选项 5 就是我现在所在的位置。

有什么建议么?谢谢您的帮助!

0 投票
2 回答
639 浏览

php - CodeIgniter 加入字段有帮助吗?

我需要帮助构建包含连接字段的 CodeIgniter Datamapper ORM 查询。我有一张Merchants表和一张Vendors表。它们具有多对一的关系,也就是说,许多Merchants是单个Vendor的一部分。

因此,遵循 Datamapper ORM 约定的我的数据库表是:

商人

供应商

商人_供应商

此外,在Mercers_vendors表中,我加入了“角色”和“管理员”字段。显然,这些数据必须放在连接表中,如果放在Merchants表中,我将无法为每个Vendor定义角色和管理员。

最后,商家用户是一对一的关系。将Merchants视为只是Users的扩展。

我正在尝试从遵循此数据结构的数据创建一个 PHP 数组,但我似乎无法正确填充角色和管理字段。为了简单起见,我删除了多余的列:

这是我正在使用的代码 - 假设我们知道供应商 ID:

这让我了解上述没有角色和管理员的 PHP 数据结构。 我很清楚这个include_join_fields()功能 - 但我似乎无法让它工作。具体来说,我尝试$m->vendor->include_join_fields();然后尝试通过$mV->vendor->join_roleand访问角色/管理字段$mV->vendor->join_admin- 但这不起作用。

非常感谢您的帮助!

0 投票
1 回答
577 浏览

codeigniter - CodeIgniter/Datamapper - 更新一对多关系

与 CodeIgniter/Datamapper 更新一对多关系时遇到问题。在我的脑海中,我认为当一对多的关系被更新时。关系表中的现有记录将被删除并添加新关系。情况似乎并非如此。

使用以下内容,每次将新记录添加到关系表中:

创建的关系是正确的,但我希望只有其中包含的对象包含$banners在关系表中,而不是任何历史项目。

这是正确的功能吗?如果是,使此更新过程正常工作的最佳方法是什么?

谢谢

0 投票
1 回答
212 浏览

php - 在 Codeigniter DataMapper ORM 中,没有为深层关系实例化对象

从这个例子:

http://datamapper.wanwizard.eu/pages/getadvanced.html#Deep.Relationship.Include

你可以看到它说:这个时候,深层关系不支持实例化。.

所以如果我们在 Group 模型中定义了一些方法,除非我们手动收集字段数据并自己实例化 group 对象,否则仍然无法使用。

我对为什么不支持它很感兴趣,这对于 ORM 来说很难实现吗?

另外,我非常想知道是否有任何简单的解决方法或您如何解决此问题。

0 投票
1 回答
779 浏览

codeigniter - 如何使关系名称独立于 CI Datamapper 中的相关模型?

Application_Model_User在 Datamapper 中设计关系时,必然会将关系称为与相关对象同名的关系,当您有类似类名之类的东西时,这不太方便。对于那些急于说有一个带有“class”键的配置选项的人,我知道。去过那里试过。它仅适用于获取相关对象,不适用于更新它们。

这是重现问题的代码片段:

此代码给出“无法将用户模型与角色模型相关联”。user_roles错误,但是如果将关系从“roles”重命名为“rolemodel” ,它确实可以正常工作(意味着在连接表中插入了一条新记录)。

所以,如果有任何 CI 的 Datamapper 的狂热用户可以提供帮助,请告诉我如何正确定义关系。

0 投票
2 回答
1459 浏览

php - 在 Codeigniter 中保存数据映射器关系

我从 Datamapper 开始并且有一些错误。我想如果我创建一个对象、一个相关对象然后保存关系,那么这两个对象也都被保存了。

实际上,如果我这样做,则不会保存配置文件。当然不是关系。如果我做这样的事情:

两者都已保存,但配置文件完全为空。没有保存任何参数,但 id 和 Datamapper 默认(创建和更新)

这种行为是正确的还是我错过了什么?

谢谢!