Web

Как поместить информацию в контроллер Laravel 8

Я пытаюсь создать API для платформы, подобной netflix, с использованием Laravel 8; все работает отлично, даже петиции в postman. Единственная проблема, с которой я сталкиваюсь, это нахождение петиции через id;  так, например, один из моих маршрутов: http://127.0.0.1:8000/api/actors, и если я пытаюсь подать петицию, используя метод get, на http://127.0.0.1:8000/api/actors/ 1 Postman возвращает мне ошибку, которая, на мой взгляд, зависит от того, как я вложил информацию в свой файл ActorController. Поэтому я хотел попросить вас взглянуть на мой файл ActorController:

<?php

namespace App\Http\Controllers;

use App\Models\Actor;

use App\Models\Documentaryactor;

use App\Models\Fictionactor;

use App\Models\Kidactor;

use App\Models\Movieactor;

use App\Models\Originalactor;

use App\Models\Otheractor;

use Illuminate\Http\Request;

use Illuminate\Http\Response;

 

class ActorController extends Controller {

    public function index() {

        $actors = Actor::all();

        return response()->json([

            "data" => $actors,

            "status" => Response::HTTP_OK

        ], Response::HTTP_OK);

    }

    public function store(Request $request) {

        $actor = Actor::create($request->all());

        return response()->json([

            "message" => "Actor has been successfully created",

            "data" => $actor,

            "status" => Response::HTTP_CREATED,

        ], Response::HTTP_CREATED);

    }

    public function show(Actor $actor) {

        $movieactor = Movieactor::findOrFail($actor->idMovie);

        $fictionactor = Fictionactor::findOrFail($actor->idFiction);

        $documentaryactor = Documentaryactor::findOrFail($actor->idDocumentary);

        $kidactor = Kidactor::findOrFail($actor->idKid);

        $originalactor = Originalactor::findOrFail($actor->idOriginal);

        $otheractor = Otheractor::findOrFail($actor->idOther);

        return response()->json([

            "actor" => $actor,

            "movieactor" => $movieactor,

            "fictionactor" => $fictionactor,

            "documentaryactor" => $documentaryactor,

            "kidactor" => $kidactor,

            "originalactor" => $originalactor,

            "otheractor" => $otheractor,

            "status" => Response::HTTP_OK,

        ], Response::HTTP_OK);

    }

    public function update(Request $request, Actor $actor) {

        $actor->update($request->all());

        return response()->json([

            "message" => "Actor has been successfully updated",

            "data" => $actor,

            "status" => Response::HTTP_OK,

        ], Response::HTTP_OK);

    }

    public function destroy(Actor $actor) {

        $actor->delete();

        return response()->json([

            "message" => "Actor has been successfully deleted",

            "data" => $actor,

            "status" => Response::HTTP_OK,

        ], Response::HTTP_OK);

    }

}

Как вы видите в функции show, я попытался вложить информацию, поступающую из других моих таблиц (в частности, я создал несколько сводных таблиц для связывания данных). Например, сводная таблица актеров документальных фильмов была создана, чтобы связать вместе мою таблицу актеров и мою таблицу документальных фильмов.

Я действительно не могу понять, что делаю не так, и заранее благодарю всех, кто поможет мне понять это.

Ответ 1

findOrFail выбрасывает исключение, когда не находит модель. Вы можете просто использовать метод find так, чтобы он просто возвращал null, если модель не найдена.

Другая проблема может заключаться в том, что агент, которого вы пытаетесь получить, отсутствует.

public function show(Actor $actor) {

        $movieactor = Movieactor::find($actor->idMovie);

        $fictionactor = Fictionactor::find($actor->idFiction);

        $documentaryactor = Documentaryactor::find($actor->idDocumentary);

        $kidactor = Kidactor::find($actor->idKid);

        $originalactor = Originalactor::find($actor->idOriginal);

        $otheractor = Otheractor::find($actor->idOther);

        return response()->json([

            "actor" => $actor,

            "movieactor" => $movieactor,

            "fictionactor" => $fictionactor,

            "documentaryactor" => $documentaryactor,

            "kidactor" => $kidactor,

            "originalactor" => $originalactor,

            "otheractor" => $otheractor,

            "status" => Response::HTTP_OK,

        ], Response::HTTP_OK);

    }

Схожие статьи

Песочницы HTML, CSS и для JS-кода: что это и для чего нужны
Web

Песочницы HTML, CSS и для JS-кода: что это и для чего нужны

Web

Как восстановить сериализованную строку, которая была повреждена из-за неправильной длины счетчика байтов

Web

Неопределенные переменные в PHP - как их правильно определить

Web

Почему событие Onclick работает, даже если форма пуста? И после нажатия на кнопку submit появляется оповещение, которое показывает, что поле ввода является обязательным