返回不同的字段名称Laravel?

时间:2015-02-27 16:16:10

标签: javascript php laravel naming

我在应用程序中使用完整的日历开源库。我在后端使用Laravel。现在大多数JavaScript库都在变量名中使用了cameCase。事情是在后端Laravel在表格中有一个命名约定,我猜它使用了underscored_in_the_column_name。

现在create()方法非常方便,并且创建了一个包含输入数据的新资源,我不必手动分配多个字段。但是现在我正在使用库,它将数据作为camelCase发送,这是一个两个问题,因为当我将数据从服务器返回到日历时,我必须再次确保字段在camelCase而不是underscores_between_them。

我该怎么做?有没有办法在Laravel中实现这一目标,还是我必须手动完成?

1 个答案:

答案 0 :(得分:1)

我认为你基本上有两种选择:

1。将数据库更改为camelCase

snake_case只是Laravel的约定它不需要像这样的列名。因此,您只需将名称更改为camelCase,并将模型中的$snakeAttributes选项设置为false:

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

然后您应该能够使用camelCase属性名称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);
}