Php 在api中校准索引时发生laravel BadMethodCall()错误

Php 在api中校准索引时发生laravel BadMethodCall()错误,php,laravel,Php,Laravel,Ptag控制器 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; use App\Ptag; use App\Http\Resources\PtagResource; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Resources\Jso

Ptag控制器

    <?php

      namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use Validator;
    use App\Ptag;
    use App\Http\Resources\PtagResource;
    use Illuminate\Support\Facades\Auth;
    use Illuminate\Http\Resources\Json\JsonResource;
    use Illuminate\Validation\Rule;


    class PtagController extends Controller
    {
        public function index(Request $request){
            $query=Ptag::query();
    return PtagResource::collection($query);
     }
    }

问题:

vendor
文件夹的
DelegatesToResource.php
文件中,我们有以下代码:

public function offsetExists($offset)
{
    return array_key_exists($offset, $this->resource);
}

array\u key\u exists
函数在PHP
7.4.x
上不推荐使用。因此,您遇到的错误与PHP有关,而不是与Laravel有关

解决方案:

方法1:最简单的方法是降级您的PHP版本。当然,您仍然必须确保Laravel
5.7
(PHP>=7.1.3)的性能

方法2:将项目升级到更高版本。要限制项目中的太多更改,可以使用版本
5.8
。在此版本中,库不再使用
array\u key\u exists
函数

public function offsetExists($offset)
{
    return isset($this->resource[$offset]);
}

检查您使用的PHP版本,并将其与您的laravel版本的最低要求进行比较。我的PHP-v为7.4,laravel的PHP-v最低要求为6.3。这检查出你使用的是哪一个版本的Laravel?Laravel-5.7版本
public function offsetExists($offset)
{
    return array_key_exists($offset, $this->resource);
}
public function offsetExists($offset)
{
    return isset($this->resource[$offset]);
}