Php 在api中校准索引时发生laravel BadMethodCall()错误
Ptag控制器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
<?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
函数在PHP7.4.x
上不推荐使用。因此,您遇到的错误与PHP有关,而不是与Laravel有关
解决方案:
方法1:最简单的方法是降级您的PHP版本。当然,您仍然必须确保Laravel5.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]);
}