php - Datamapper (Overzealous Edition), Codeigniter 和有很多说明

标签 php mysql codeigniter codeigniter-datamapper

首先,我想表明我是一个 ORM 菜鸟。我一生中从未使用过 ORM,并且在我的日常开发中达到了一个点,我需要做一些疯狂的高级关系,我相信 Datamapper Overzealous Edition 可以在我使用 Codeigniter 时帮助我。

在我的数据库中有以下表格;

用户
项目
客户
任务

这是我想要的表之间的关系;

  • 一个用户可以属于多个项目。
  • 一个项目可以有多项任务,但只能有一个客户。
  • 一个客户可以有很多用户,也可以有很多项目
  • 一项任务只能有一个项目

我试图在模型目录中设置我的模型,正如文档中所说的那样,模型名称末尾没有 s,因此对于用户,我有一个 user.php 模型等等。

我知道文档很棒,但我似乎无法正确理解它,尽管它显然非常简单。我知道你通过例如 $u = new User(); 来实例化模型。在您的 Controller 内部,但我的问题是在模型内部建立关系。

我如何设置我的模型以具有上述关系,例如,当我获取任务时,我可以看到它属于哪个项目以及来自其关联数据库表的一大堆信息。

我注意到在文档中,您在项目模型中使用了以下内容,它应该告诉它一个项目可以有多个任务; var $has_many = array('任务')

仅此而已吗?是否像定义 $has_many 和 $has_one 变量并将关联的模型名称放入数组中一样简单?

最佳答案

我从未使用过这个特定的 ORM,但我确实使用了 Doctrine。如果您正在使用的那个以几乎相同的方式工作,那么您的问题的简单答案是 - 是的!使用 Doctrine,您可以在模型类中设置所有关系。然后 ORM 将为您管理这一切。因此,例如,如果您实例化一个新的任务对象... $任务=新任务(); 然后您可以通过简单地编写来访问与 Project 表的关系 $任务->项目;

我必须强调,上面的代码不是为 datamapper 编写的,因此可能无法按原样运行,但我希望它能为您解决问题。听起来您确实理解文档,但就是不相信!!!!

关于php - Datamapper (Overzealous Edition), Codeigniter 和有很多说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3498967/

相关文章:

MySQL 外键 : Cannot add or update a child row: a foreign key constraint fails

mysql - 如何通过 dockerfile 安装 mysql-server

php - Codeigniter highcharttable统计一个月有多少数据

php - MVC - 此代码属于模型、 Controller 还是 View ?

php - 删除带有 mod_rewrite 和 SEO 问题的 .php 扩展名

php - 更改 "woocommerce_template_loop_product_title"标题标签

mysql - 唯一索引失败

codeigniter - 我可以在没有终端的情况下使用 Angular JS 吗?

php - 是否可以使用 Laravel 5 在动态数据库连接上进行迁移?

php - 使用 jQuery 将事件添加到动态生成的元素