javascript — соглашения об именах Laravel и переменных (случай змеи + случай верблюда)

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

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

Нам было трудно изменить основные атрибуты модели, например, созданный_кат, обновленный_кат, подтверждающий_пароль, отношения модели и т. д. в случае змеи.

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

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

3

Решение

Я не рекомендовал, поскольку он изменяет ядро ​​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();
}
3

Другие решения

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

2

По вопросам рекламы [email protected]