Laravel: как предотвратить отправку значений, таких как create_at user_id_created, во внешний интерфейс - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь остановить некоторые данные, которые отправляются из бэкэнда во внешний интерфейс. Я не хочу, чтобы эти поля: created_at, updated_at, user_id_created, user_id_updated отправлялись из бэкэнда в интерфейс, потому что это просто трата времени.

Я пытаюсь использовать эту функцию mapForTransfer, чтобы сбросить некоторые значения из таблицы. Однако не уверен, правильно ли я получаю ключ от таблицы.

public function mapForTransfer($collection) {
    return $collection->map(function($item, $key) {
        $key['id'] = $key[$this->service->getKey()];
        $item['id'] = $item[$this->service->getIdName()];
        unset($item['created_at']);
        unset($item['user_id_created']);
        unset($item['updated_at']);
        unset($item['user_id_updated']);
        return $item;
    });
}

Данные по интерфейсу без полей: created_at, updated_at, user_id_created, user_id_updated

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Если вы используете модели и Eloquent, вы можете просто указать, какие элементы исключить в вашей модели, назначив их в защищенном свойстве $hidden:

class MyModel extends Eloquent {
    protected $hidden = ['created_at', 'updated_at', ...];
}
0 голосов
/ 17 апреля 2019

Если вам вообще не нужны эти данные, вы можете просто выбрать то, что вам нужно в запросе Stuff::where('user_id', 1)->select( 'name' )->get(), из этого запроса будет возвращено только name.

Если вам нужно использоватьuser_id перед отправкой данных вы можете отобразить и собрать нужные поля:

$stuff = $stuff->map( function ($thing) { return $thing->only( ['name'] ); });

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