Laravel 5 命名规范

24

因为我是新手,对于Laravel约定有些困惑。我正在关注Jeffrey Way的Laracasts视频,他的控制器名称使用复数形式

例如:PagesController、Cards Controller、PostsController

但如果我参考Laravel > ControllersLaravel > Tutorials > Quick Start > Intermediate Task List的官方文档,则使用单数形式的名称。

例如:PhotoController、TaskController

请问是否有人可以列出以下实体的官方编码约定?

表格:posts、comments、post_commentsPost、Comment、PostComment

列:id、post_id、comment_idid、postId、commentId

控制器:PagesController、Cards Controller、PostsControllerPhotoController、TaskController

模型:Pages、Cards、PostsPage、Card、Post


除了控制器的命名之外,我同意下面两点。我见过人们在控制器的单复数上使用两种方式,老实说,这取决于哪个对你更有意义。无论你选择哪个,都要保持一致。 - Rwd
3个回答

46

表:posts(文章),comments(评论),comment_post(评论文章)

列:id(编号),post_id(文章编号),comment_id(评论编号)

控制器:PhotoController(照片控制器),TaskController(任务控制器)

模型:Page(页面),Card(卡片),Post(文章)

有关更多详细信息,请查看我的Laravel 命名约定表格。


4
是不是“post_comments”?我认为不是“post_comment”。 - Yohan Hirimuthugoda
6
不,实际上应该是comment_post,这是根据外键名称按字母顺序派生出来的。 - Alexey Mezenin
1
如果数据库表的命名规范是蛇形复数,那么为什么评论表的名称是comment_post?它应该是post_comments,因为一篇文章可以有多条评论。无论如何,根据文档,如果我想要,我可以在模型类下使用代码片段$table = 'post_comments';来更改默认表名为自己的表名。 - Yohan Hirimuthugoda
非常感谢您的快速回复。我会尽可能按照您建议的约定进行操作。还有一件小事需要澄清:当我需要对特定控制器的视图进行分组时,文件夹名称是复数还是单数?例如:posts 还是 post? - Yohan Hirimuthugoda
包含缩写的模型名称如何处理呢?例如 ERC20 - Boris D. Teoharov
显示剩余2条评论

6
请记住,“约定”只是约定,您可以随意做任何事情,只需保持一致即可,但最好遵循文档:
  1. 表名:使用复数形式和下划线来分隔单词(例如users、tags等)
  2. 列名:使用单数形式和下划线来分隔单词(例如user、tag等)
  3. 模型:使用大写字母开头的单数形式,并使用大写字母来分隔单词(例如User、Tag等)
  4. 控制器:使用大写字母开头的单数形式,并使用大写字母来分隔单词,后跟“Controller”(例如UserController、TagController等)

2
控制器名称不应依赖于模型名称。在真实的应用程序中,有很多控制器没有“自己的模型”,还有一些控制器使用多个模型。 - Alexey Mezenin
是的,如果控制器与模型相关联,最好将它们关联起来,但如果您无法这样做,只需使用单数 +“Controller”(TagController,UserController,...)即可。 - paolobasso
以下是如何给一个由多个单词组成的“model”命名:UserMetaKey。使用该名称命名的“model”期望处理名为 user_meta_keys 的表。 - Amr
在 Blade 文件中,name="modelname" 怎么样? - Pianistprogrammer

2

我知道我是老派的(从1984年开始在计算机上编码,尽管我已经跟随PHP和js/ECMAScript自它们的第一个版本以来不断进化),但好古老的Merise规则“永不使用复数”有强大而好的理由被尊重。

很遗憾Eloquent强制我们使用复数的表名。

PSR-2或PSR-1并没有说明单数还是复数,但为了简单起见,我强烈建议始终使用单数,除非“系统”需要它(像Eloquent一样)。在这种情况下,不要混用复数和单数。在Laravel使用的数据表中,我们使用复数的表名。这是一种奇特的现象(与其他已经完成或与之通信的开发相比),但所有的表在那部分都是复数形式。

并且在命名时绝不能写错(例如: 'personnal' i.o. 'personal', 等等)。首先进行双重检查。拼写规则。


1
我完全同意这个观点。我永远不想记住各种复数和单数的规则。所有东西都是单数,没有例外。 - ryantxr
我也同意。如果您可以在Laravel读取的配置文件中定义此类事物的首选项,那将是很好的。然后,您肯定可以根据他们的建议命名,但可以自由覆盖,例如当Eloquent打破范例时。 - McAuley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接