2016-04-08 2 views
3

Мы следуем стандарту Laravel с атрибутами имен именования как snake_case_variables. Хотя Laravel - это просто уровень API в нашей системе, который говорит о интерфейсе Javascript и многих других приложениях.Laravel и условные обозначения имен (случай с змеей + случай с верблюдом)

Все потребители нашего API имеют сильные предпочтения для переменных с верблюжьей оболочкой (например, javascript/React).

Нам было трудно изменить основные характеристики модели, например. created_at, updated_at, confirm_password, образцовые отношения и т. д. в случай змей.

мы поиграли WTH и реализовать преобразование слоев, чтобы изменить «корпус», входя и выходя, хотя это просто добавить к техническому обслуживанию и другой вещи для разработчиков, чтобы помнить ...

Как мы можем легко преобразовать все атрибуты модели, отношения и общие привязки Laravel в случае верблюда?

+0

Если вы оставите эти атрибуты, как snake_case, будут ли эти пользователи бросать ошибки или просто не смогут прочитать эти атрибуты? Во втором случае, вероятно, есть решение, во-первых, нет легкой работы. – naneri

ответ

3

Я не рекомендовал, поскольку он меняет ядро ​​ларавеля и поэтому его модифицирует файлы поставщиков, и его будет нелегко обновить без потери изменений, но я думаю, что самый простой способ - это сделать замените поставщика \ laravel \ framework \ src \ illuminate \ Support \ Str.php с измененной версией. laravel выполняет все строковые модификации в studly, camel case, snake case и т. д. из методов внутри этого файла. пройдите через функции, измените способ выполнения функций, но я не думаю, что это будет иметь смысл, поскольку имена методов не будут соответствовать тому, что они выполняют.

Лучше всего, но сложный путь заключается в том, чтобы входить в каждый файл, который использует методы в классе Str, и модифицировать в соответствии с вашими потребностями, чем это будет иметь смысл и при этом работать очень много, так как вам нужно изменить методы, которые используются.

Измените требуемые значения из этих файлов.

см. продавец \ laravel \ framework \ src \ Database \ Eloquent \ Model.php также вы можете увидеть, что эти значения установлены здесь для проверки с моделей.

public static $manyMethods = ['belongsToMany', 'morphToMany', 'morphedByMany']; 
const CREATED_AT = 'created_at'; 
const UPDATED_AT = 'updated_at'; 

см поставщика \ Laravel \ Framework \ Src \ Database \ Схемы \ Blueprint.php также можно видеть, что эти значения устанавливаются здесь для проверки от создания миграции и капельной миграции. например, тот, который создает временные метки.

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

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

Вы должны обязательно взглянуть на Mappable. У нас была та же проблема, и это решило это. Вы можете сопоставить snake_case именам CamelCase и даже использовать их в QueryBuilder.