[英]Laravel and variable naming conventions (snake case + camel case)
我們遵循Laravel將模型屬性命名為snake_case_variables的標准。 雖然Laravel只是我們系統中的API層,它與Javascript前端和許多其他應用程序進行對話。
我們API的所有消費者都非常喜歡使用駝峰變量(例如javascript / React)。
我們發現很難將核心模型屬性(例如created_at,updated_at,confirmation_password,模型關系等)更改為snake case。
我們已經玩弄並實施了變換層來改變進出的“套管”,雖然這只會增加維護和開發人員記住的另一件事......
我們如何輕松地將所有模型屬性,關系和一般Laravel綁定轉換為駝峰案例?
我沒有推薦,因為它改變了laravel的核心,因此它修改了供應商文件,並且在不丟失更改的情況下更新並不容易,但我認為最簡單的方法是更換供應商\\ 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();
}
你一定要看看Mappable 。 我們遇到了同樣的問題,這解決了它。 您可以將snake_case映射到CamelCase名稱,甚至可以在QueryBuilder中使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.