我在应用程序中使用完整的日历开源库。我在后端使用Laravel。现在大多数JavaScript库都在变量名中使用了cameCase。事情是在后端Laravel在表格中有一个命名约定,我猜它使用了underscored_in_the_column_name。
现在create()方法非常方便,并且创建了一个包含输入数据的新资源,我不必手动分配多个字段。但是现在我正在使用库,它将数据作为camelCase发送,这是一个两个问题,因为当我将数据从服务器返回到日历时,我必须再次确保字段在camelCase而不是underscores_between_them。
我该怎么做?有没有办法在Laravel中实现这一目标,还是我必须手动完成?
答案 0 :(得分:1)
我认为你基本上有两种选择:
snake_case只是Laravel的约定它不需要像这样的列名。因此,您只需将名称更改为camelCase,并将模型中的$snakeAttributes
选项设置为false:
class MyModel extends Eloquent {
public static $snakeAttributes = false;
}
然后您应该能够使用camelCase属性名称create()
和get()
模型。
如果你想保持你的数据库表,你将不得不重写模型中的一些方法:
首先,对于数组/ 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);
}