Laravel和变量命名规范(蛇形命名+驼峰命名)

3
我们遵循Laravel标准将模型属性命名为snake_case_variables。尽管Laravel只是我们系统中与Javascript前端和许多其他应用程序交互的API层。
我们所有API的使用者都强烈偏好驼峰式变量(例如javascript/React)。
我们发现将core模型属性(例如created_at,updated_at,confirmation_password,model relations等)更改为snake_case很困难。
我们已经玩弄并实现了转换层来改变进出的"casing",但这只会增加维护成本,并给开发人员带来另一件需要记住的事情...
如何轻松地将所有模型属性、关系和一般的Laravel绑定转换为camel case?

如果你将这些属性以snake_case形式留下,这些消费者会抛出错误还是只是无法读取它们? 在第二种情况下,可能会有解决方案,但在第一种情况下,没有简单的解决方法。 - naneri
2个回答

3
我不建议这个方法,因为它会改变Laravel的核心部分,修改vendor文件也不容易更新而不丢失更改。但是我认为最简单的方法是用修改后的版本替换 vendor\laravel\framework\src\illuminate\Support\Str.php 。 Laravel 使用此文件内的方法对字符串进行各种修改,例如 studly、camel case、snake case 等等。浏览函数并更改它们的执行方式,但我认为这可能没有意义,因为方法名称不会与其执行的内容相匹配。
最好的但是困难的方法是进入使用 Str 类方法的每个文件,并根据需要进行修改,这样做会很有意义,但需要大量工作,因为您需要更改正在使用的方法。
请更改这些文件中所需的值。
请参阅 vendor\laravel\framework\src\Database\Eloquent\Model.php ,您还可以在此处查看设置这些值以供从模型检查使用的值。
public static $manyMethods = ['belongsToMany', 'morphToMany', 'morphedByMany'];
const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at';

请查看vendor\laravel\framework\src\Database\Schema\Blueprint.php,同时你也可以在这里查看这些数值是否被设置来检查创建迁移和删除迁移。例如,创建时间戳的那个。

public function timestamps()
{
    $this->timestamp('created_at')->nullable();

    $this->timestamp('updated_at')->nullable();
}

2

您一定要看看Mappable。我们曾经遇到同样的问题,而这个工具解决了它。您可以将snake_case映射为CamelCase名称,甚至可以在QueryBuilder中使用它们。


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