我想知道如何使用ResourceCollection获得工作应用程序接口调用
错误:
Undefined property: Illuminate\Database\Query\Builder::$name
我的产品方法:
public function index()
{
return ProductCollection::collection(Product::all());
}
我的收藏:
public function toArray($request)
{
//return parent::toArray($request);
return [
"name" => $this->name,
"price" => $this->price,
"href" => [
"link" => route("product.show", $this->id)
]
];
}
尝试它只是通过资源(不是ResourceCollection ),只是修改了方法调用,它是工作的,但我需要知道如何修复ResourceCollection return new ProductResource($product);
错误快照:
发布于 2017-12-02 23:14:57
ProductCollection继承了ResourceCollection而不是资源,所以$this不是模型而是集合。如果你想改变集合中的每个元素,你可以像这样使用map函数:
public function toArray($request)
{
return $this->map(function($product) {
return [
"name" => $this->name,
"price" => $this->price,
"href" => [
"link" => route("product.show", $this->id)
]
];
});
}
发布于 2018-06-10 05:40:07
变化
use Illuminate\Http\Resources\Json\ResourceCollection;
class ProductCollection extends ResourceCollection
{
至
use Illuminate\Http\Resources\Json\Resource;
class ProductCollection extends Resource
{
https://stackoverflow.com/questions/47608404
复制相似问题