Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有高级数据库结构的PHP和true MVC结构_Php_Database_Model View Controller - Fatal编程技术网

具有高级数据库结构的PHP和true MVC结构

具有高级数据库结构的PHP和true MVC结构,php,database,model-view-controller,Php,Database,Model View Controller,我正忙于开发基于纯PHP MVC结构的酒店预订系统的第一阶段。我试着熟悉像Cake和CodeIgniter这样的库,但我对自己的控制能力太少感到不舒服 因此,我选择构建自己的迷你框架,到目前为止,这个框架对我来说运行得相当好。现在,我使用的数据库结构相当复杂。存在相当多的多对多关系和一对多关系。我选择在数据库本身中不强制任何引用完整性,因为我认为这应该在编程级别上进行,以避免以后遇到挫折-事情并不总是按计划进行,我发现以编程方式弄清楚发生了什么比在SQL数据库中更容易,错误消息的解释性更少 所以

我正忙于开发基于纯PHP MVC结构的酒店预订系统的第一阶段。我试着熟悉像Cake和CodeIgniter这样的库,但我对自己的控制能力太少感到不舒服

因此,我选择构建自己的迷你框架,到目前为止,这个框架对我来说运行得相当好。现在,我使用的数据库结构相当复杂。存在相当多的多对多关系和一对多关系。我选择在数据库本身中不强制任何引用完整性,因为我认为这应该在编程级别上进行,以避免以后遇到挫折-事情并不总是按计划进行,我发现以编程方式弄清楚发生了什么比在SQL数据库中更容易,错误消息的解释性更少

所以,关键是——我正在努力做出的决定是,将这些任意SQL语句放置在何处,以处理不同对象之间的关系

例如,我有两个对象——用户和属性。在这种关系中,用户是可能拥有将要出租的房间的财产的所有者。在我的用户对象模型(MVC)中,我有像“插入”、“删除”、“更新”、“获取用户”、“用户存在”这样的方法。类似的方法存在于我的属性模型中

每个模型都扩展了我创建的一个数据库类,以利用到数据库的连接

在此结构中,我在何处以及如何管理这些对象之间的关系?这种关系是属性与用户之间的关系->这对很多人来说都是可能的。在哪里为关系创建插入、更新和删除方法?在其中一个对象的控制器中,它自己的对象称为“属性\用户\关系”

我是这些论坛的新手,事实上,在我三年的发展历程中,我从来没有在论坛上发表过文章——只要阅读一下就可以了,所以如果还有什么你想让我发表的参考或更清楚的话,请告诉我


谢谢

哇,无意冒犯,但你弄得一团糟。没有真的或假的MVC,只有MVC,它是一种架构模式,与数据库无关。php有足够好的MVC框架,你有足够的控制权

无论如何,您应该有一个持久层,它处理所有存储,包括查询、表关系等。业务层将有对象建模酒店预订过程。业务对象将不知道数据库。最好有一个DAO或存储库,它将实际执行查询和恢复电子商务对象

对业务概念进行建模是非常重要的,忽略数据库问题。当你必须保存/加载数据时,请担心数据库

仅用于查询,您可以有一个专门的Dao/存储库,它将隐藏Wueri并直接返回视图的视图模型

需要了解的一件重要事情是,持久性模型(您在db中保存的内容)不同于业务模型(业务概念和流程)。一个是简单的数据,另一个是行为。M是多态的,它可以表示数据库结构或查看数据或业务行为

也可能会帮助您更好地理解MVC的M。

的可能副本。请参阅。您也应该这样做。