如何通过 Laravel dataTransformer 传递所有 Eloquent (ORM) 结果?
How to pass all Eloquent (ORM) results throught a Laravel dataTransformer?
我从使用 Eloquent(Laravel 的 ORM)构建的查询中获取结果
$query = Lawyer::whereHas('user', function($q) use ($request) {
$q->where('is_active', true);
});
$result = $query->get()
我想传递通过变换器获得的结果 class LawyerTransformer extends TransformerAbstract{}
以向结果添加一些数据。
当我尝试这个时:
$this->collection($query->get(), new LawyerTransformer())
我有以下问题:Method [collection] does not exist.
如何使用转换器转换所有结果?
您可以在集合实例上使用 transform 方法来实现类似的效果这里是一个将数组中的所有值递增 1 的示例;
$collection = collect([1, 2, 3]);
$collection->transform(function ($item, $key) {
return (new IncrementTransformer)->transform($item);
});
还有变形金刚class
class IncrementTransformer
{
public function transform($item)
{
return $item += 1;
}
}
你可能会把它写得更干净一些,但你已经掌握了基本的想法。
我从使用 Eloquent(Laravel 的 ORM)构建的查询中获取结果
$query = Lawyer::whereHas('user', function($q) use ($request) {
$q->where('is_active', true);
});
$result = $query->get()
我想传递通过变换器获得的结果 class LawyerTransformer extends TransformerAbstract{}
以向结果添加一些数据。
当我尝试这个时:
$this->collection($query->get(), new LawyerTransformer())
我有以下问题:Method [collection] does not exist.
如何使用转换器转换所有结果?
您可以在集合实例上使用 transform 方法来实现类似的效果这里是一个将数组中的所有值递增 1 的示例;
$collection = collect([1, 2, 3]);
$collection->transform(function ($item, $key) {
return (new IncrementTransformer)->transform($item);
});
还有变形金刚class
class IncrementTransformer
{
public function transform($item)
{
return $item += 1;
}
}
你可能会把它写得更干净一些,但你已经掌握了基本的想法。