Laravel Fractal Необязательные поля

Я использую фрактал для моего небольшого проекта, вот мой код:

public function transform(Series $series) {
return [
'id' => $series->id,
'title' => $series->title,
'url' => $series->url,
'description' => $series->description,
'thumbnail_hd' => $series->thumbnail_hd,
'thumbnail_wide' => $series->thumbnail_wide,
'views' => $series->views
];

}

Я хотел бы сделать views (который является int) необязательным и не возвращает представления, если не запрошено — так как это поле основано на отношении и увеличит время обработки.

Я хотел бы использовать его как отношения (поэтому я могу включать определенные поля всякий раз, когда мне нужно):

// in transformer
public function includeUser(Series $series) {
return $this->item($series->user, new UserTransformer);
}

// in controller
return fractal()
->item($series)
->parseIncludes(['user'])
->transformWith(new SeriesTransformer)
->toArray();

Но только для целого числа вместо целого массива данных. Возможно ли использовать Fractal?

2

Решение

Что вы можете сделать, это следующее

    public function transform(Series $series) {
$return = [
'id' => $series->id,
'title' => $series->title,
'url' => $series->url,
'description' => $series->description,
'thumbnail_hd' => $series->thumbnail_hd,
'thumbnail_wide' => $series->thumbnail_wide,
];
if ($series->views > 0) {
$return['views'] = (int) $series->views;
}
return $return;
}

Я бы не советовал делать это, хотя. Обычно я просто возвращаю просмотры как 0.
Если вы беспокоитесь о производительности вашей БД, вашему приложению все равно придется посчитать просмотры, чтобы узнать, больше ли они 0.

Если вы беспокоитесь о производительности на стороне клиента, это не будет иметь значения с одной парой ключ-значение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector