JavaScript — вернуть разные имена полей Laravel?

Я использую полную библиотеку календаря с открытым исходным кодом в приложении. Я использую Laravel на заднем плане. Сейчас большинство библиотек JavaScript используют cameCase в своих именах переменных. Дело в том, что у внутреннего интерфейса Laravel есть соглашение об именовании в таблицах, которое, я думаю, использует underscored_in_the_column_name.

Теперь метод create () очень удобен и создает новый ресурс с поступающими входными данными, и мне не нужно назначать несколько полей вручную. Но теперь, так как я работаю с библиотекой, она отправляет данные как camelCase, что является проблемой в обоих случаях, потому что когда я возвращаю данные с сервера в календарь, мне снова нужно убедиться, что поля находятся в camelCase, а не в underscores_between_them.

Как мне это сделать? Есть ли способ сделать это в Laravel или мне придется делать это вручную?

0

Решение

На мой взгляд, у вас есть два варианта:

1. Измените базу данных на camelCase

случай змеи — это просто Ларавелла условность не обязательно, чтобы ваши имена столбцов были такими. Таким образом, вы можете просто изменить имена на camelCase и установить $snakeAttributes вариант в вашей модели (ы), чтобы ложь:

class MyModel extends Eloquent {
public static $snakeAttributes = false;
}

Тогда вы должны быть в состоянии create() а также get() Ваша модель с именами атрибутов camelCase.


2. Переопределите некоторые методы

Если вы хотите сохранить ваши таблицы БД такими, как они есть, вам придется переопределить некоторые методы в вашей модели:

Во-первых, для преобразования массива / 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);
}
1

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

Других решений пока нет …

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