Php中,在这里放置多个数据库操作逻辑


Php, where to put multiple database operation logic?

我们有一个forum_threadsforum_posts表。Posts连接到线程。一个用户想用第一个帖子开始一个新线程,所以:

class ForumPostModel
{
    public function open ($topic, $firstComment)
    {
        $newThreadId = ForumThreadModel::createNew ($topic); // this will return with the ID of the new thread
        return $this->insertInto ($newThreadId, $firstComment);
    }
}

这个伪代码显示了首先插入一个线程并获取它的ID,然后向它插入注释并返回新的ID。除了缺少交易和检查之外,这段代码并不"干净",不是吗?把它放在哪里?对于控制器,我不这么认为。

将数据库逻辑放在哪里取决于您现在的系统架构是什么。

将业务逻辑和数据库逻辑分离到不同的层中是一种很好的方法。拥有一个服务层(域门面和用于访问它们的精简接口集合)也很好,您可以在其中操作不同的域模型。因此,可以决定将上述代码放入应用程序的服务层。

服务层

我建议你读一下Martin Fowler的《企业应用架构模式》