Как передать все результаты Eloquent (ORM) через преобразователь данных Laravel?

Я получаю результаты запроса, созданного с использованием Eloquent (Laravel ORM)

$query = Lawyer::whereHas('user', function($q) use ($request) {
$q->where('is_active', true);
});
$result = $query->get()

Я хотел бы передать результаты, которые я получаю через trasformer class LawyerTransformer extends TransformerAbstract{} добавить некоторые данные к результатам.

Когда я пытаюсь это:

$this->collection($query->get(), new LawyerTransformer())

У меня есть следующая проблема: Method [collection] does not exist.

Как я могу преобразовать все результаты с помощью трансформатора?

0

Решение

Вы можете использовать метод transform в экземпляре коллекции для достижения чего-то подобного. Вот пример, который увеличит все значения в массиве на 1;

$collection = collect([1, 2, 3]);

$collection->transform(function ($item, $key) {
return (new IncrementTransformer)->transform($item);
});

И трансфомер класс

class IncrementTransformer
{
public function transform($item)
{
return $item += 1;
}
}

Вы могли бы написать это немного чище, но вы поняли основную идею.

1

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

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

По вопросам рекламы [email protected]