我有一个应用程序向API发送如下对象:
{id: 4, foo_id: 4, numberOfBars: 2}
Laravel后端有一个数据库表,其中的字段如下:
id, foo_id, number_of_bars
我目前正在将API键映射到数组中的表名,如下所示:
$map = [
'id' => 'id',
'foo_id' => 'foo_id',
'numberOfBars' => 'number_of_bars'
];
并使用它来创建新的数据加载以传递给Eloquent模型。这似乎效率低下。有没有办法在Eloquent中更有效地做到这一点?我无法创建一个catch-all方法,因为你看到一些键在camelCase中,而有些则没有。
答案 0 :(得分:0)
使用Mappable的sofa/eloquence扩展名定义映射:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Sofa\Eloquence\Eloquence;
use Sofa\Eloquence\Mappable;
class User extends Model
{
use Eloquence, Mappable;
protected $maps = [
'alias' => 'sql_field_name',
];
}
感谢@ Salama96