我在 Laravel 中使用 JSON 资源到数组转换器时遇到问题。我的代码是这样的:
数据资源.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class DataResource extends JsonResource
{
public function toArray(Request $request)
{
return parent::toArray($request);
}
}
用户控制器.php
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Resources\DataResource;
class UserController extends Controller
{
public function showUser()
{
$Users = User::get();
return new DataResource($Users);
}
}
我在本地主机中使用 Laravel 10 使用该代码,它运行良好,没有任何问题。但是当我使用 Laravel 5.7 在我的虚拟主机中上传该代码时。它给了我一个错误:
App\Http\Resources\DataResource::toArray(Illuminate\Http\Request $request) 的声明应与 Illuminate\Http\Resources\Json\JsonResource::toArray($request) 兼容
我不知道问题出在哪里,代码是相同的,但不同版本的 Laravel 显示该错误。我的网站仍然使用 Laravel 5.7 并且没有升级,因为如果我升级它,会有太多的变化和工作。
请给我一些建议,先谢谢了
toArray 方法签名不应包含请求类型提示。相反,它应该简单地不接受任何参数或接受任何自定义资源转换所需的参数。这是 DataResource 类的更正版本:
<?PHP
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class DataResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}
如果仍有任何问题,请告诉我。