所以我试图利用资源来控制输出,因为有人告诉我这是为 api 输出建模数据的最佳方法。
客户模型
public function invoices () {
return $this->hasMany('\App\Models\Invoice');
}
发票型号:
public function customer() {
return $this->belongsTo('\App\Models\Customer');
}
客户资源:
public function toArray($request)
{
return [
'id' => $this->id,
'invoices' => InvoiceResource::collection('invoices')
];
}
发票资源:
public function toArray($request)
{
$customer = $this->whenLoaded('customer');
return [
'id' => $this->id,
'customer' => CustomerResource::collection($this->whenLoaded($customer)),
];
}
客户控制器:
public function index()
{
$customers = Customer::with(['invoices']);
return CustomerResource::collection($customers->paginate(50))->response();
}
但是当我去 API EndPoint
Error
Call to a member function first() on string
Illuminate\Http\Resources\Json\ResourceCollection::collectResource
vendor/laravel/framework/src/Illuminate/Http/Resources/CollectsResources.php:30
错误从堆栈开始:
return CustomerResource::collection($customers->paginate(50))->response();