有人可以在这里解释一下为什么 CakePHP 有一个惯例,即对数据库表和控制器使用复数名称,而对模型使用单数名称?为什么不总是使用单数,或者总是使用复数?对我来说,总是不得不思考“现在我在这里使用复数还是单数?”似乎令人困惑。(或者有没有一种简单的方法来记住??)然后你就有了结合使用两者的连接表!
我认为某处有充分的理由,但只是没有遇到过。
(我真的希望这不仅仅是因为 Ruby-on-Rails 那样工作。)
西蒙。
有人可以在这里解释一下为什么 CakePHP 有一个惯例,即对数据库表和控制器使用复数名称,而对模型使用单数名称?为什么不总是使用单数,或者总是使用复数?对我来说,总是不得不思考“现在我在这里使用复数还是单数?”似乎令人困惑。(或者有没有一种简单的方法来记住??)然后你就有了结合使用两者的连接表!
我认为某处有充分的理由,但只是没有遇到过。
(我真的希望这不仅仅是因为 Ruby-on-Rails 那样工作。)
西蒙。
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
它并不总是完美的,但我认为一旦你习惯了它,它就会是一个很好的约定。不过,我可以看到它在开始时是如何令人困惑的。
有没有简单的记忆方法?
是的,关于命名约定重要的部分(db/model/controller)......如果它不是模型的名称(即。User
)或外键的名称(即。user_id
),那么它是复数。除了这两件事之外,一切基本上都是复数。