Eloquent将API属性映射到字段名称

时间:2018-05-25 12:56:12

标签: php laravel eloquent

我有一个应用程序向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中,而有些则没有。

1 个答案:

答案 0 :(得分:0)

使用Mappablesofa/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