首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将信息嵌套到Laravel 8控制器中

将信息嵌套到Laravel 8控制器中
EN

Stack Overflow用户
提问于 2021-05-12 16:21:43
回答 1查看 29关注 0票数 0

我正在尝试使用Laravel 8为类似netflix的平台构建一个API;一切都运行得很完美,即使是postman的请愿,我遇到的唯一问题是在请愿书中通过一个id;所以,例如,我的一个路径是:http://127.0.0.1:8000/api/actors,如果我尝试使用get方法做请愿书到http://127.0.0.1:8000/api/actors/1 Postman会返回一个错误,在我看来,这取决于我如何将信息嵌套在我的ActorController文件中。所以我想请你看一下我的ActorController文件,这是:

代码语言:javascript
运行
复制
<?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
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $actors = Actor::all();
        return response()->json([
            "data" => $actors,
            "status" => Response::HTTP_OK
        ], Response::HTTP_OK);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    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);
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Actor  $actor
     * @return \Illuminate\Http\Response
     */
    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);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Actor  $actor
     * @return \Illuminate\Http\Response
     */
    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);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Actor  $actor
     * @return \Illuminate\Http\Response
     */
    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函数中看到的,我尝试嵌套来自其他表的信息(具体地说,我创建了几个数据透视表来将数据绑定在一起)。例如,创建纪录片-演员透视表是为了将我的演员表和纪录片表绑定在一起。

我真的不能理解我做错了什么,我要提前感谢那些帮助我理解它的人。如果你需要(也许是为了更好地理解我的问题),我会立即附加其他文件。

问候

Alessandra

EN

回答 1

Stack Overflow用户

发布于 2021-05-12 16:52:37

findOrFail找不到模型时,它会抛出异常。您可以只使用find方法,这样如果找不到模型,它将只返回null

另一个问题可能是您试图获取的角色丢失了。

代码语言:javascript
运行
复制
    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Actor  $actor
     * @return \Illuminate\Http\Response
     */
    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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67499824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档