Laravel - 数据库,表和列命名约定?

The*_*ude 24 php database naming-conventions laravel eloquent

我正在使用laravel eloquent数据对象来访问我的数据,命名我的表,列,外键/主键等的最佳方法是什么?

我发现,那里有很多命名约定.我只是想知道哪一个最适合laravel雄辩模型.

我正在考虑遵循命名约定:

  1. 奇异的表名(例如:帖子)
  2. 奇异列名称(例如:userId - post表中的用户ID)
  3. 用于表名中多个单词的Camel大小写(例如:PostComment,PostReview,PostPhoto)
  4. 用于列名中多个单词的Camel大小写(例如:firstName,postCategoryId,postPhotoId)

所以有了这个,我可以在控制器中使用类似的语法.

$result = Post::where('postCategoryId', '4')->get();
Run Code Online (Sandbox Code Playgroud)

是否有任何推荐的Laravel指南?我可以继续这些命名约定吗?

如果有人有更好的建议,我会很高兴听到他们.谢谢你们!

use*_*288 33

Laravel有自己的命名惯例.例如,如果您的模型名称是User.phpLaravel,则期望"User"类位于该文件中.它还期望users表格为User模型.但是,您可以通过在模型上定义表属性来覆盖此约定,例如,

    class User extends Eloquent implements UserInterface, RemindableInterface {
        protected $table = 'user';
    }
Run Code Online (Sandbox Code Playgroud)

来自Laravel官方文档:

请注意,我们没有告诉Eloquent哪个表用于我们的User模型.除非明确指定了其他名称,否则该类的小写复数名称将用作表名.因此,在这种情况下,Eloquent将假定User模型将记录存储在users表中.您可以通过$table在模型上定义属性来指定自定义表

如果你将另一个表中的用户表id用作外键,那么它应该是蛇形的,user_id以便在关系的情况下可以自动使用它.同样,您可以通过在关系函数中指定其他参数来覆盖此约定.例如,

    class User extends Eloquent implements UserInterface, RemindableInterface {
        public function post(){
            return $this->hasMany('Post', 'userId', 'id');
        }
    }

    class Post extends Eloquent{
        public function user(){
            return $this->belongsTo('User', 'userId', 'id');
        }   
    }
Run Code Online (Sandbox Code Playgroud)

Laravel博士的雄辩关系

对于表中的其他列,您可以根据需要为其命名.

我建议你先阅读一次文档.


Sei*_*oan 6

我不同意你们在这里展示的这些例子.

如果您查看官方的Laravel文档,特别是在Eloquent的关系会话(http://laravel.com/docs/4.2/eloquent#relationships)中,它会很干净.

表名应为复数形式,即用户模型的"用户"表.

列名不需要在Camel Case中,而是Snake Case.看它已经回答:Laravel中的数据库/模型字段名称约定?

很常见,你可以看到它就像RedBeanORM:列的Snake Case,即使你尝试其他的.由于您可以从Model对象调用以访问其关系的方法,因此建议避免使用列1重复表名.