我正在使用laravel Elount数据对象访问我的数据,命名我的表、列、外键/主键等的最佳方式是什么?
我发现,有很多命名惯例。我只是想知道哪一个最适合Laravel雄辩的模特。
我正在考虑以下命名约定:
因此,我可以在控制器中使用类似的语法。
$result = Post::where('postCategoryId', '4')->get();
对此,是否有任何建议的Laravel指南?我可以继续这些命名约定吗?
如果有人有更好的建议,我会很高兴听到他们。谢谢!
class User extends Eloquent implements UserInterface, RemindableInterface {
public function post(){
return $this->hasMany('Post');
}
}
class Post extends Eloquent{
public function user(){
return $this->belongsTo('User');
}
}
总的来说,我不同意你们在这里展示的这些例子。
它是干净的,如果你看看官方Laravel留档,尤其是在雄辩的关系会议(http://laravel.com/docs/4.2/eloquent#relationships)。
表名应该是复数,即用户模型的“用户”表。
列名不需要在骆驼案例中,而是蛇案例中。查看它已经回答:Laravel中的数据库/模型字段名称约定?
这太常见了,你可以看到它就像RedBeanORM:列的蛇壳,即使你尝试了其他的。建议避免用列名称重复表名称,因为您可以从Model对象中调用方法来访问它们的关系。
Laravel有自己的命名约定。例如,如果模型名为User。php
然后Laravel希望类“User”位于该文件中。对于用户
模型,它还需要用户
表。但是,您可以通过在模型上定义表属性来覆盖此约定,如,
class User extends Eloquent implements UserInterface, RemindableInterface {
protected $table = 'user';
}
来自Laravel官方文件:
请注意,我们没有告诉Eloquent我们的用户模型使用哪个表。除非明确指定了另一个名称,否则类的小写复数名称将用作表名。因此,在本例中,Eloquent将假定用户模型在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');
}
}
Laravel雄辩关系的文档
对于表中的其他列,可以随意命名。
我建议你检查一下文件。
根据在这里找到的命名约定:https://restfulapi.net/resource-naming/,我有一个无法找到答案的特定问题。 以customers和accounts为例,可以使用URN“/customers/{customerId}/accounts”标识特定“customer”的子集合资源“accounts”,如何为多个客户ID查找accounts?这种情况的命名约定是什么? 是使
9.2.1. 识别符限制条件 9.2.2. 识别符大小写敏感性 数据库、表、索引、列和别名是识别符。该节描述了在MySQL中识别符的允许的语法。 下面的表描述了每类识别符的最大长度和允许的字符。 识别符 最大长度(字节) 允许的字符 数据库 64 目录名允许的任何字符,不包括‘/’、‘\’或者‘。’ 表 64 文件名允许的任何字符,不包括‘/’、‘\’或者‘。’ 列 64 所有字符 索引 64 所
问题内容: 对于那些没有特殊符号(例如m_foo或)命名成员变量的人foo_,如何命名ctor和setter的参数? 到目前为止我尝试过的一些选项… 问题答案: 我正在使用foo_,它比_foo更好,因为它不会与实现特定的函数名称和关键字发生冲突。
问题内容: 如果我想使用SQL在SQL数据库中简单地重命名一列(而不更改其类型或约束,仅更改其名称),该怎么做?还是不可能? 这适用于任何声称支持SQL的数据库,我只是在寻找一个特定于SQL的查询,而无论实际的数据库实现如何,该查询都将起作用。 问题答案: 在PostgreSQL(以及许多其他RDBMS)上,可以使用常规语句来做到这一点:
问题内容: 如何获得特定表中的列名列表? IE。 火鸟表: 得到这样的列表: 问题答案: 如果要获取特定表中的列名列表,则这是您需要的sql查询: 我在firebird 2.5中尝试过此方法,并且可以正常工作。 顺便说一句,YOUR-TABLE-NAME周围的单引号是必需的
问题内容: 我必须获取所有唯一键约束和特定数据库索引的列表。我正在做这样的事情: 只是想确认这是否是正确的方法,或者是否有更好的方法来做同样的事情? 问题答案: 由于独特的约束是在幕后作为索引实现的,因此您可以直接从sys.indexes获取所有这些信息: 对所有数据库重复(大概没有针对特定表的过滤器):