我正在应用程序中使用完整的日历开源库。我在后端使用 Laravel。现在大多数 JavaScript 库在其变量名中都使用 comeCase。问题是,在后端,Laravel 在表中有一个命名约定,我猜它使用 underscored_in_the_column_name。
现在,create() 方法非常方便,它可以使用输入数据创建一个新资源,而且我不必手动分配多个字段。但现在由于我正在使用该库,它以驼峰命名法发送数据,这对双方来说都是一个问题,因为当我将数据从服务器返回到日历时,我再次必须确保字段采用驼峰命名法而不是下划线之间的下划线。
我该怎么做?有没有办法在 Laravel 中完成这个任务,还是我必须手动完成?
最佳答案
据我所知,您基本上有两个选择:
1。将数据库更改为驼峰命名法
snake_case 只是 Laravel 的约定,不需要有这样的列名称。因此,您只需将名称更改为驼峰命名法并将模型中的 $snakeAttributes
选项设置为 false:
class MyModel extends Eloquent {
public static $snakeAttributes = false;
}
然后您应该能够使用驼峰命名法属性名称create()
和get()
您的模型。
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);
}
关于javascript - Laravel 返回不同的字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28769546/