Return 不同的字段名称 Laravel?

Return different field names Laravel?

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

现在 create() 方法变得非常方便,它可以使用即将到来的输入数据创建一个新资源,而且我不必手动分配多个字段。但是现在因为我在图书馆工作,它发送数据作为 camelCase 这在两个方面都是一个问题,因为当我 return 数据从服务器到日历时,我再次必须确保字段是 camelCase而不是 underscores_between_them.

我该怎么做?有没有办法在 Laravel 中完成此操作,还是我必须手动完成?

据我所知,您在这里基本上有两个选择:

1。将数据库更改为 camelCase

snake_case 只是 Laravel 的 约定 它不需要像这样的列名。所以你可以简单地将名称更改为 camelCase 并将模型中的 $snakeAttributes 选项设置为 false:

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

那么您应该能够 create()get() 您的模型使用驼峰式属性名称。


2。覆盖一些方法

如果你想让你的数据库表保持原样,你将不得不覆盖模型中的一些方法:

首先,对于array/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);
}