【问题标题】:Laravel 5 Naming ConventionsLaravel 5 命名约定
【发布时间】:2017-05-30 01:27:16
【问题描述】:

我对 Laravel 约定有点困惑,因为我是这个框架的新手。我正在关注 Jeffrey Way Laracasts 视频,他使用 复数 作为控制器名称。

例如:PagesController、Cards Controller、PostsController

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

例如:PhotoController、TaskController

谁能列出以下实体的官方编码约定?

表格:posts、cmets、post_cmetsPost、Comment、PostComment

列:id、post_id、comment_idid、postId、commentId

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

模型:页面、卡片、帖子页面、卡片、帖子

【问题讨论】:

  • 除了命名控制器之外,我同意以下两者。我见过人们对控制器使用单数和复数,老实说,这对你来说更有意义。只要与你一起去的人保持一致。

标签: php laravel laravel-5


【解决方案1】:

请记住,“约定”只是约定,您可以做任何您想做的事情,但最好遵循文档:

  1. Table name:复数和_ 分隔单词(用户、标签等)
  2. Columns name:单数和_ 分隔单词(用户、标签、...)
  3. Models:单数,首字母大写,大写分隔单词(用户,标签,...)
  4. Controllers:单数,首字母大写,大写分隔单词,后跟“Controller”(UserController、TagController、...)

【讨论】:

  • 控制器名称不应依赖于模型名称。在一个真实的应用程序中,有很多没有“它自己的模型”的控制器和使用许多模型的控制器。
  • 是的,如果控制器与模型相关联,最好将它们关联起来,但如果您不能只使用单数 + "Controller" (TagController, UserController, ...)
  • 这是命名model 的方法,其名称由多个单词组成:UserMetaKey。具有该名称的模型需要处理名称为 user_meta_keys 的表。
  • 刀片文件中的内容,name="modelname"
【解决方案2】:

表格:帖子、cmets、comment_post

列: id、post_id、comment_id

控制器: PhotoController、TaskController

模型:页面、卡片、帖子

有关更多详细信息,请查看我的Laravel naming conventions 表。

【讨论】:

  • 不是 post_cmets 吗?我认为不是 post_comment
  • 不,实际上应该是comment_post,它是按字母顺序从外键名称派生而来的。
  • 令人困惑,如果数据库表命名约定是蛇形复数,为什么它是comment_post?它应该是 post_cmets,因为 1 个帖子可以有很多 cmets。无论如何,根据文档,如果我愿意,我可以使用 $table = 'post_cmets';代码 sn-p 在模型类下将默认表名更改为我自己的。
  • @YohanHirimuthugoda 你在谈论数据透视表,通常情况下,那些没有自己的模型。但是您可以在定义belongsToMany() 关系时定义自定义数据透视表名称。不过,我不建议您这样做。遵循惯例来创建可读和可维护的应用程序总是更好。
  • 非常感谢您的快速回复。正如你所建议的,我将尽可能地遵循惯例。我需要澄清的另一件小事;当我需要对特定控制器的视图进行分组时,它是复数还是单数文件夹名称?例如:帖子或帖子
【解决方案3】:

我知道我是老派(从 1984 年开始在计算机上编码,尽管从 PHP 和 js/ECMAScript 的第一个版本开始演变),但古老的 Merise 规则“永远不要使用复数” ” 有充分而充分的理由受到尊重。 可惜 Eloquent 迫使我们使用复数形式的表名。

PSR-2 或 PSR-1 没有表示任何关于复数或单数的信息,但为了简单起见,我强烈建议始终使用单数,除非“系统”需要它(如 Eloquent 所做的那样)。在这种情况下,不要混合复数和单数。在 laravel 使用的数据表上,我们使用复数形式的表名。这是一个奇点(与已经取得的或与我们交流的其他发展相比),但所有表格在这部分都是复数形式。

并且在命名时切勿打错字(例如:'personnal' i.o. 'personal' 等)。先复查。正字法规则。

【讨论】:

  • 我完全同意这一点。我从不想记住关于什么是复数什么不是复数的各种规则。一切都是独一无二的,没有例外。
  • 我也同意。如果您可以在 Laravel 读取的配置文件中定义您对此类事物的偏好,那就太好了。那么你当然可以根据他们的建议来命名,但是当 Eloquent 之类的东西打破了范式时,你可以随意覆盖。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
相关资源
最近更新 更多