Мы следуем стандарту Laravel именования атрибутов модели как snake_case_variables. Хотя Laravel — это просто уровень API в нашей системе, который взаимодействует с веб-интерфейсом Javascript и многими другими приложениями.
Все потребители нашего API сильно предпочитают переменные в верблюжьей оболочке (например, javascript / React).
Нам было трудно изменить основные атрибуты модели, например, созданный_кат, обновленный_кат, подтверждающий_пароль, отношения модели и т. д. в случае змеи.
мы поиграли и внедрили слои преобразования, чтобы изменить входящий и выходящий «корпус», хотя это просто добавляет к обслуживанию и еще одной вещи, которую разработчики должны помнить …
Как мы можем легко преобразовать все атрибуты модели, отношения и общие привязки Laravel в случай верблюда?
Я не рекомендовал, поскольку он изменяет ядро laravel и, следовательно, изменяет файлы вендоров, и его будет нелегко обновить без потери изменений, но я думаю, что самый простой способ сделать это — заменить поставщик \ Laravel \ рамки \ SRC \ Осветите \ Support \ Str.php с измененной версией. laravel выполняет все строковые модификации для студий, верблюжьих, змеиных и т. д. из методов этого файла пройтись по функциям изменить способ выполнения функций, но я не думаю, что это будет иметь смысл, поскольку имена методов не будут соответствовать тому, что они выполняют.
Лучший, но сложный способ — это войти в каждый файл, использующий методы класса Str и изменяющий его в соответствии с вашими потребностями, тогда это будет иметь смысл, и, тем не менее, придется проделать большую работу, поскольку вам нужно изменить используемые методы.
измените необходимые значения из этих файлов.
увидеть поставщик \ Laravel \ рамки \ SRC \ Database \ Eloquent \ Model.php также вы можете видеть, что эти значения установлены здесь для проверки из моделей.
public static $manyMethods = ['belongsToMany', 'morphToMany', 'morphedByMany'];
const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at';
увидеть поставщик \ Laravel \ рамки \ SRC \ Database \ Схемы \ Blueprint.php также вы могли видеть, что эти значения установлены здесь для проверки от создания миграций и отбрасывания миграций. например тот, который создает временные метки.
public function timestamps()
{
$this->timestamp('created_at')->nullable();
$this->timestamp('updated_at')->nullable();
}
Вы должны обязательно взглянуть на Присоединить геоинформацию. У нас была та же проблема, и это решило ее. Вы можете сопоставить snake_case с именами CamelCase и даже использовать их в QueryBuilder.