【问题标题】:Route model binding in Laravel 5.6Laravel 5.6 中的路由模型绑定
【发布时间】:2018-12-17 20:36:29
【问题描述】:

我在我的 API 开发项目中使用 Laravel 资源控制器和路由模型绑定。我有以下代码

public function show(Post $post)
{
    return $post->comments()->get();

}

我正在使用以下网址

http://127.0.0.1:8000/api/posts/1

我想同时检索 post 值和 comments 值。

但我只得到comments 值。

【问题讨论】:

  • 您是否在两个模型的帖子和评论之间建立了关系?

标签: eloquent routes laravel-5.6


【解决方案1】:

如果您在两个模型中都设置了关系,则仅发送帖子将加载帖子和 cmets

【讨论】:

    【解决方案2】:

    你应该在你的模型中“发布”、“评论”并获得下一个形状。

    $post->comments;
    

    如果您的模型中没有关系,您应该在此答案中发布您的模型。

    【讨论】:

    • 感谢@Daniel。一条评论有一张图片。我的关系评论模型如下public function image() { return $this->hasOne('App\Model\image', 'id', 'image_id'); }我如何使用此查询附加图像?
    【解决方案3】:

    你试过 Eloquent load aka Lazy Eager Loading https://laravel.com/docs/5.6/eloquent-relationships#lazy-eager-loading

    有时您可能需要在检索到父模型后立即加载关系。例如,如果您需要动态决定是否加载相关模型,这可能很有用:

    在你的情况下会是这样的

    $post->load('comments')

    【讨论】:

    • 谢谢@Vaidas。一条评论有一张图片。我的关系评论模型如下public function image() { return $this->hasOne('App\Model\image', 'id', 'image_id'); }我如何使用此查询附加图像?
    猜你喜欢
    • 2018-09-15
    • 2019-01-01
    • 2021-05-24
    • 2016-06-04
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多