所有数据库表的模型类

Key*_*lia 2 cakephp

是否有必要为CakePHP中的每个数据库表创建一个模型类?

并且每个模型类都需要一个控制器吗?

Rab*_*ire 6

是否有必要为cakephp中的每个数据库表创建模型类?

一般来说,是的.如果您希望检索,修改或删除特定表中的数据,那么CakePHP的方法是为该特定表创建模型并使用内置方法.例外情况是:

  • 连接表:如果连接表非常简单,则无需为它们创建模型.
  • 如果由于某种原因您不想为几个表创建模型,并使用query另一个模型的函数来访问它们.

相反:您可以拥有没有表格的模型,这对于验证表单非常有用.我从来没有发现自己的模型数量少于我拥有的表数(减去简单的连接表).

每个模型类都需要一个控制器吗?

不,这不对.虽然MVC模式规定每个模型都应由其自己的控制器操纵,但有时单个控制器处理多个模型会使代码更简单.一个例子是具有用户模型,其hasOne 资料的hasMany 地址.您可以操作以下所有3个模型UsersController:

class UsersController extends AppController {
    var $uses = array('User', 'Profile', 'Address');

    function edit_profile() {
        ...
    }

    function change_address() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

始终使用MVC作为指导原则.如果你偏离架构太多,事情很容易就会崩溃.但是,最终,干净,有组织和有效的代码才是最重要的.:)

HTH.