如何在 CakePHP 中的单个控制器中针对多个功能创建多个模型


how to create multiple models against multiple function in single controller in CakePHP

我认为,在"CakePHP"中,一个模型针对每个控制器,但我在单个控制器中有多个函数,每个函数代表不同的页面和数据库表。即

public function manage_categories(){}
public function manage_sub_categories(){}

以上 2 个函数在管理控制器中,但现在的问题是如何针对每个函数创建模型来表示数据库。 每个函数在数据库中都有唯一的属性。还有一件事,要么模型名称应与控制器名称"admin"相同,要么此名称应与函数名称相同。而在正常情况下,型号名称与控制器名称相同。

"用户"

模型名称用于"用户控制器"请指导我解决上述问题。我尝试了足够的解决方案,机器人无法解决。提前谢谢。

如果你有两个数据库表,那么就SoC而言,拥有两个控制器是合乎逻辑的最佳实践,而不是将不属于同一域的许多不同的东西扔到一个控制器中。

有时,当您只想使用关联模型中的一部分数据时,可以通过关联访问它:

$this->Model->SubModel->foo();

你还说你有一个管理控制器,这是一个可行的但不是很好的方法。相反,CakePHP具有前缀路由功能。因此,访问的操作(如/admin/categories/some_action)将路由到 CategoriesController some_action() 操作。

"用户"

模型名称用于"用户控制器"

是错误的,按照惯例,模型应该命名为单数,而不是复数。您的用户控制器找不到用户模型,因为它正在寻找用户模型。

并远离 Model::query(),尽可能多地使用 ORM。

public function manage_categories(){}
public function manage_sub_categories(){}

应该变成:

class CategoriesController extends AppController {
    public function admin_index() { /*...*/ }
}
class SubCategoriesController extends AppController {
    public function admin_index() { /*...*/ }
}

但是假设子类别属于同一表的类别,我认为根本不需要第二个模型或第二个控制器。