首页 > 解决方案 > 错误:无法解析的依赖关系解析文件 Container.php 中 class JsonResource 中的 $resource

问题描述

当我尝试对资源进行 POST 调用时遇到此问题。我正在努力解决这个错误几个小时。有人能帮帮我吗?

api.php

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::post('login', 'UserController@login')->name('login');
Route::post('register', 'UserController@register')->name('register');
Route::group(['middleware' => 'auth:api'], function(){
    Route::post('details', 'UserController@details');
    Route::apiResource('schedule', 'ScheduleController');
});

调度控制器

<?php

namespace App\Http\Controllers;

use App\Schedules;
use App\Http\Resources\Schedule;
use Illuminate\Http\Request;

class ScheduleController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(){
        return Schedule::collection(Schedules::all());
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(){
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Schedule $request)
    {
        $schedule = new Schedules();

        if (isset($request['title'])) {
            $schedule->title = $request['title'];
        };

        if (isset($request['start'])) {
            $schedule->start = $request['start'];
        };

        if (isset($request['end'])) {
            $schedule->end = $request['end'];
        };

        if ($schedule->save()) {
            return response()->json(new Schedule($schedule), 200);
        } else {
            return response()->json('Error can\'t save schedule', 500);
        };
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Schedule  $schedule
     * @return \Illuminate\Http\Response
     */
    public function show(Schedule $id)
    {
        return response()->json(new Schedule(Schedules::find($id)), 200);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Schedule  $schedule
     * @return \Illuminate\Http\Response
     */
    public function edit(Schedule $schedule)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Schedule  $schedule
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Schedule $schedule)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Schedule  $schedule
     * @return \Illuminate\Http\Response
     */
    public function destroy(Schedule $id)
    {
        if (Schedules::find($id)->delete()) {
            return response()->json('Success on delete carpet', 200);
        } else {
            return response()->json('Error can\'t delete carpet', 500);
        }
    }

    public function creazaProgramare(Schedule $request)
    {
        $schedule = new Schedules();

        if (isset($request['title'])) {
            $schedule->title = $request['title'];
        };

        if (isset($request['start'])) {
            $schedule->start = $request['start'];
        };

        if (isset($request['end'])) {
            $schedule->end = $request['end'];
        };

        if ($schedule->save()) {
            return response()->json(new Schedule($schedule), 200);
        } else {
            return response()->json('Error can\'t save schedule', 500);
        };
    }

}

调度资源

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class Schedule extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request)
    {
        return [
                'title' => $this->title,
                'start' => $this->start,
                'end' => $this->end
        ];
    }
}

时间表模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Schedules extends Model
{
    //
}

正如我在其他人身上看到的那样,我尝试运行“composer install”。似乎问题来自 JsonResource 第 55 行(构造函数),但我不知道如何解决它。我会很感激你的帮助

标签: laravelapi

解决方案


我尝试了两种解决方案,但都不起作用。

我面临的错误是:

Illuminate\Contracts\Container\BindingResolutionException: Unresolvable dependency resolve [Parameter #0 [ <required> $resource ]] in class Illuminate\Http\Resources\Json* JsonResource * in file Illuminate\Container* Container.php on line 1032 *


推荐阅读