5

有人可以在这里解释一下为什么 CakePHP 有一个惯例,即对数据库表和控制器使用复数名称,而对模型使用单数名称?为什么不总是使用单数,或者总是使用复数?对我来说,总是不得不思考“现在我在这里使用复数还是单数?”似乎令人困惑。(或者有没有一种简单的方法来记住??)然后你就有了结合使用两者的连接表!

我认为某处有充分的理由,但只是没有遇到过。
(我真的希望这不仅仅是因为 Ruby-on-Rails 那样工作。)

西蒙。

4

2 回答 2

10

CakePHP 约定

CakePHP 的约定是从多年的 Web 开发经验和最佳实践中提炼出来的。虽然我们建议您在使用 CakePHP 开发时使用这些约定,但我们应该提到,其中许多原则很容易被覆盖——这在使用遗留系统时特别方便。

我认为这个想法是让它更流畅地阅读和以正确的方式思考元素。数据库表总是复数的,因为它们包含许多记录。该模型是单一的,因为您应该考虑使用它查找单个记录。的选择字段model_id将自动从 中获取其选项$models,因为您选择了众多选项之一。

$model = $this->Model->find('first');  // reads like English
$model = $this->Models->find('first'); // slightly trips you up

$models = $this->Model->find('all');   // works okay
$models = $this->Models->find('all');  // more logical, but "this models" still trips

它并不总是完美的,但我认为一旦你习惯了它,它就会是一个很好的约定。不过,我可以看到它在开始时是如何令人困惑的。

于 2009-11-18T00:09:46.120 回答
4

有没有简单的记忆方法?

是的,关于命名约定重要的部分(db/model/controller)......如果它不是模型的名称(即。User)或外键的名称(即。user_id),那么它是复数。除了这两件事之外,一切基本上都是复数。

于 2009-11-19T13:40:52.767 回答