Красноречивые атрибуты API сопоставления с именами полей - PullRequest
0 голосов
/ 25 мая 2018

У меня есть приложение, которое отправляет в API объект, подобный этому:

{id: 4, foo_id: 4, numberOfBars: 2}

Бэкэнд Laravel имеет таблицу базы данных с полями, подобными этим:

id, foo_id, number_of_bars

I'mв настоящее время сопоставление ключей API с именами таблиц в массиве выглядит следующим образом:

$map = [
    'id' => 'id',
    'foo_id' => 'foo_id',
    'numberOfBars' => 'number_of_bars'
];

и используется для создания новой загрузки данных для передачи в модель Eloquent.Это кажется неэффективным.Есть ли способ сделать это более эффективно в Eloquent?Я не могу создать универсальный метод, потому что, как вы видите, некоторые ключи находятся в camelCase, а некоторые нет.

1 Ответ

0 голосов
/ 21 августа 2018

Используйте расширение Mappable диван / красноречие , чтобы определить ваше отображение:

<?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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...