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);
}
我在应用程序中使用完整的日历开源库。我在后端使用 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);
}