当我在postman中使用GET类型的API资源集合时,它返回Property [name]不存在于此集合示例中,我不知道为什么,尽管我写的一切都是正确的,请帮助
我做了一个收藏夹,它返回信息
注意:当我返回$instructions = User::where('type',3)->get();它返回信息
这是我的代码
我的路由api.php
Route::resource('instructors',InstructorController::class);
我的收藏文件
public function toArray($request)
{
// return parent::toArray($request);
return [
'name' => $this->name,
'email' => $this->email,
'area_id' => $this->area_id,
'whatsapp' => $this->whatsapp,
'phone' => $this->phone,
'description' => $this->description,
];
}
我的控制器
public function index()
{
$instructors = User::where('type',3)->get();
$collection = new InstructorCollection($instructors);
return response()->json(['data'=>$collection,'error']);
}
我的table
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 250);
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->bigInteger('area_id')->unsigned()->nullable();
$table->foreign('area_id')->references('id')->on('areas')->onDelete('set null');
$table->string('whatsapp')->nullable();
$table->string('phone')->nullable();
$table->string('facebook')->nullable();
$table->tinyInteger('type');
$table->text('description')->nullable();
$table->integer('views')->default('0');
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
}
2条答案
按热度按时间qvtsj1bj1#
您正在使用
UserResourceCollection
(可以访问$this->collection
方法)并尝试访问实体属性,而不是使用普通的UserResource::collection
方法,后者为您Map和填充多个UserResource
,返回一个资源数组。创建一个名为
UserResource
的普通资源,并从控制器方法调用UserResource::collection($instructors)
。更多信息:https://laravel.com/docs/9.x/eloquent-resources#resource-collections
k4ymrczo2#
扩展
Illuminate\Http\Resources\Json\JsonResource
类,你的问题就解决了。如果你扩展了ResourceCollection
类,代码如下。