php - 创建 Entity Framework SQL表结构

标签 php mysql entity

在过去的几年里,我一直致力于开发自己的轻量级 PHP CMS,并将其用于我的个人项目。它缺少的一件事是一个简单的数据库解决方案。

我希望创建一个简单的内容类型数据库框架,在其中我可以指定新类型(用户、书籍、事件等),然后能够自动加载与其相关的所有内容。

对于某些内容类型,可能有些字段只能有 1 个值,有些字段可以有零到多个值,因此我将为这些字段使用一个新表。举个例子:

table: event
columns: id, name, description, date

table: event_people:
columns: id_event, id_user

table: event_pictures:
columns: id_event, picture

事件将有一堆包含描述等值的字段,但也可能有一堆图片和参加事件的人。

我希望能够创建一个通用 PHP 类来加载内容类型的所有信息。我当前的思考过程是创建实体加载器函数,我可以给它一个 id 和类型:

Entity:load($id, "event");

由此,我将获取所有带有“event”前缀的表,使用传入的 ID 加载所有数据,然后将其存储在多维数组中。我觉得可能有一种更有效的方法。我不想在某个地方有一个指定所有内容类型及其子表的配置文件,因为我希望能够添加一个新的子表并让它自动选择它。

是否有办法直接将这种关系存储在 MySQL 表中?我不做很多数据库工作,而且我最近才开始使用外键(真是救星)。我是否可以更有效地查看哪些表具有与事件表中的 id 列相关的外键,如果是这样,将如何完成?我也愿意接受存储此信息的不同方式。

注意:我这样做只是为了好玩,所以请不要推荐我使用任何预制框架。我想自己创建这个。

最佳答案

我认为您搜索具有前缀名称事件的所有表的方法是明智的。我认为更有效的唯一方法是拥有一个可以查询的“entity_relationship”表。它将允许您灵活地进行命名约定,避免命名冲突,并且此查找应该比模式匹配搜索更有效。

然后,每当添加具有自己的表的新对象类型时,您就可以在关系表上创建一个条目。

INSERT INTO entity_relationship VALUES 
('event','event_people'),
('event','event_pictures'),
('event','event_documents'),
('event','event_performers');

关于php - 创建 Entity Framework SQL表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37631805/

相关文章:

php - FatalErrorException : Error: Call to a member function getId() on a non-object in . ..PostListener.php 第 20 行

php - MVC 公共(public)文件夹 htaccess 不工作

MySQL SUM() 始终返回 0 值

php - MySQL:规范化数据库的子查询

php - 配置在安装页面上重定向的运行网站 WordPress

java - 删除与另一个对象有manyTomany关系的对象

java - 实体可以通过其所有属性来识别吗?

entity-framework - Entity Framework 4 INNER JOIN 帮助

php - 使用 mysql select 查询中的另一个字段添加或减去字段值

php - 手动将 "Product Model"编号添加到 Zen Cart 中的产品列表