Я использую полную библиотеку календаря с открытым исходным кодом в приложении. Я использую Laravel на заднем плане. Сейчас большинство библиотек JavaScript используют cameCase в своих именах переменных. Дело в том, что у внутреннего интерфейса Laravel есть соглашение об именовании в таблицах, которое, я думаю, использует underscored_in_the_column_name.
Теперь метод create () очень удобен и создает новый ресурс с поступающими входными данными, и мне не нужно назначать несколько полей вручную. Но теперь, так как я работаю с библиотекой, она отправляет данные как camelCase, что является проблемой в обоих случаях, потому что когда я возвращаю данные с сервера в календарь, мне снова нужно убедиться, что поля находятся в camelCase, а не в underscores_between_them.
Как мне это сделать? Есть ли способ сделать это в Laravel или мне придется делать это вручную?
На мой взгляд, у вас есть два варианта:
случай змеи — это просто Ларавелла условность не обязательно, чтобы ваши имена столбцов были такими. Таким образом, вы можете просто изменить имена на camelCase и установить $snakeAttributes
вариант в вашей модели (ы), чтобы ложь:
class MyModel extends Eloquent {
public static $snakeAttributes = false;
}
Тогда вы должны быть в состоянии create()
а также get()
Ваша модель с именами атрибутов camelCase.
Если вы хотите сохранить ваши таблицы БД такими, как они есть, вам придется переопределить некоторые методы в вашей модели:
Во-первых, для преобразования массива / JSON:
public function toArray(){
$array = parent::toArray();
$renamed = [];
foreach($array as $key => $value){
$renamed[camel_case($key)] = $value;
}
return $renamed;
}
Затем для установки и получения отдельных атрибутов:
public function getAttribute($key){
$key = snake_case($key);
return parent::getAttribute($key);
}
public function setAttribute($key, $value){
$key = snake_case($key);
parent::setAttribute($key, $value);
}
Других решений пока нет …