问题标签 [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 投票
1 回答
2197 浏览

php - 在 Codeigniter 中使用 datamapper ORM 在同一对象上多对一和多对多

我有一个应用程序需要:

用户拥有许多项目。项目有一个所有者。

用户从事许多项目。项目有很多用户。

所以我有 3 个表,用户,projects_users,项目。关系是:

一个用户(所有者)---许多项目(created_by)

许多用户(id)----通过projects_users(user_id,project_id)----许多项目(id)。

在 Codeigniter 中,我在数据映射器模型中设置了以下关系:

和...

然而,这似乎不起作用,我得到一个递归错误。在 datamapper 中表示这种关系的正确方法是什么?

0 投票
1 回答
1876 浏览

php - 如何在 Codeigniter 的 Datamapper ORM 中嵌套 WHERE 参数?

我在使用 Datamapper ORM for Codeigniter 时遇到了特定查询的问题。我的数据模型设置为有博客文章,每篇文章都有许多类别、用户和标签。我想获取与特定类别、用户或标签相关但状态为“已发布”或“已安排”的博客文章

所以换句话说,我想要完成的是: category = General AND (status = published OR status = scheduled)

在 Datamapper ORM 中,我尝试了以下语法(假设我想要名称为“General”的类别中的帖子):

但是,这会导致获得以下帖子:(status = published AND category = General) OR status = scheduled。改变语句的顺序也无济于事。我似乎无法弄清楚是否有用于在括号中嵌套 OR 条件的 Datamapper 语法。

我意识到我可以用原始 SQL 编写查询,例如:

SELECT * FROM posts WHERE (status = "published" OR status = "scheduled) AND ...

...随后是一些更复杂的 JOIN 语句,但我使用 Datamapper 的全部原因是为了更轻松地处理关系,所以我认为我不必为了嵌套或有条件的!我也意识到我可以使用子查询,但同样,我认为它不应该那么复杂。

有什么我想念的吗?某种方式来组织这个查询,以便我可以使用 Datamapper 的语法来完成它?似乎能够指定 AND/OR 语句的操作顺序应该以某种方式内置......

0 投票
1 回答
363 浏览

codeigniter - 代码点火器数据映射器

我正在使用 CodeIgniter 2.1.0 和 MySQL。我想将水平数据行显示为垂直数据行。当我从数据库中获取一行并回显它时,它看起来像

我已经使用 CodeIgniters 表库来生成上表。而不是这个,我希望它像这样显示:

如何使用 CodeIgniter 2.1.0 做到这一点?

0 投票
1 回答
262 浏览

codeigniter - 模型之间的 CodeIgniter 依赖关系,无需使用任何 ORM 或 DataMapper 系统

我正在使用 CodeIgniter 编写一个 CRUD 系统,通过从一个模型调用方法到另一个模型来实现模型之间的一些“一对多”依赖关系(不使用任何 ORM 或 DataMapper 系统)。

例如:在“每个用户有很多文档”的实现中,当删除一个用户时,User_Model直接调用Document_Model上的delete()方法,删除与之关联的所有文档。

我确信有更好的方法来实现“一对多”模型关联(没有 ORM 等),并希望得到一些指导。

谢谢

阿隆。

0 投票
1 回答
739 浏览

codeigniter - 在 DataMapper ORM 和 CodeIgniter 中将模型保存到数据库之前运行一个函数

有没有办法在使用 CodeIgniter 中的 Datamapper ORM 保存模型之前运行函数/回调?

我知道这在大多数 ORM 中是可能的,您可以在其中挂钩某些点,例如 before_update、before_create 等。基本上我想挂钩 before_update 以在修改之前将表行的副本保存在另一个日志表中。我目前正在控制器中执行此操作,但希望将其移动到模型中作为更好的 MVC 实践。

请提供代码或文档链接。提前致谢。

0 投票
1 回答
348 浏览

php - 在codeigniter datamapper中避免重复数据!?PHP

我将 Food(table) 键/输入插入数据库,即使我不认为基于手册,我也会得到重复的键。我真的很困惑和卡住!?关系如下:每个用户都有一个相关的许多不同的食物类型。然后,每当我阅读用户的 $data['food'] agin...它都会创建一个重复的条目。这意味着下次用户登录而不是知道食物退出时。它增加了主键并且不明白键的退出与手册所建议的相反,保存足够聪明,可以知道......所以我的问题是我只想拥有每个条目的一个副本,但我最终得到了更多条目. 如何避免重复条目?

0 投票
3 回答
936 浏览

codeigniter - codeigniter datamapper 关系验证问题

我需要设置验证规则来验证特定对象上的相关项目,即:一个用户与其相关的产品不能超过 3 个。

我相信 DataMapper 可以使用 _related_max_size 规则检查此验证,但我无法弄清楚如何在模型中的 $validation 数组上使用它。

到目前为止,我已经在我的用户和产品模型中尝试过这个:

有人可以向我展示如何在模型、控制器和最终视图上设置它的示例吗?

编辑:我的意思是,一个用户有很多产品,并且可以创建一定数量的产品,比如说 3 个产品,当达到这个数量时,用户不能再创建产品,这个验证规则不应该允许用户创造更多的产品。

这将是数据库架构:

更多信息在这里:http ://codeigniter.com/forums/viewthread/178045/P500/

谢谢!

编辑:

好的,我现在一切正常……除了,我需要执行以下操作:

$products_limit 来自用户关联的“计划”,并在用户登录时存储在会话中。当我尝试运行它时,我得到:

有没有办法让这个设置动态化?

0 投票
1 回答
1338 浏览

mysql - 在 CodeIgniter Datamapper 中使用高级查询查找重复记录

我正在尝试从数据库中获取所有重复的行。假设我有一个entries主键idantVARCHAR列的表,称为name. 我已经有一个有效的 SQL 查询:

为了我的个人兴趣以及与其余代码的一致性,我想使用 CodeIgniter Datamapper lib 构建类似的查询。

我已经构建了子查询部分,它按预期工作:

但我无法弄清楚如何将子查询集成到父查询(INNER JOIN ... ON ...部分)中。

0 投票
1 回答
1070 浏览

php - CodeIgniter DataMapper ORM include_related 总是返回数据库表中的第一行

我有一个用户模型和一个 user_profile 模型,我正在尝试使用以下函数获取特定用户和相关的 user_profile。如果我注释掉 include_related 行,它可以工作并根据 user_id 获取用户,但如果我尝试使用 include_related 来拉入用户配置文件字段,它只会返回数据库中的第一个用户,而不是基于 user_id 的用户。这里出了什么问题?

0 投票
1 回答
603 浏览

codeigniter - 如何在 Datamapper ORM 中访问新保存的相关对象

我将 Datamapper ORM 1.8.2.1 与 CodeIgniter 2.1.0 一起使用,并且无法从父级中访问新添加的相关对象。

我有一个这样的父类:

和一个像这样的子类:

在用户代码中,我实例化了这个父对象并添加了一些子对象:

当我在添加子对象后立即计数时,我得到 0 :

...而查看数据库表显示已添加父记录,已添加所有子记录,并且它们与父记录正确相关。

顺便说一句,当我尝试这种解决方法时,我得到了正确数量的子行:

那么我上面的代码可能有什么问题?