首页 > 解决方案 > 批量显示关系数据

问题描述

我正在编写一个 API,我的主题和评论与它相关。我的愿望是显示所有主题,同时也显示属于主题的评论。我与 hasMany 选项建立了关系,但我无法显示数据。

发布表 发布表

评论表

评论表

后模型

    <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Posts extends Model
{
    protected $table = 'posts';
    protected $fillable = [
        'post_id',
        'user_id'
    ];

    public function user(){
        return $this->belongsTo('App\Models\Users');
    }

    public function comment()
    {
        return $this->hasMany('App\Models\Comments', 'post_id', 'id');
    }
}

评论模型

    <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Comments extends Model
{
    protected $fillable = [
        'user_id',
        'post_id',
        'description'
    ];

    public function user()
    {
        return $this->belongsTo('App\Models\Users', 'user_id', 'id');
    }

    public function post()
    {
        return $this->belongsTo('App\Models\Posts', 'post_id', 'id');
    }
}

例如,当我拍摄以下所有主题时,我想要带有用户 ID 的评论。我该如何定制这个?

{
    "id": 1,
    "user_id": 10,
    "image": "https://lorempixel.com/800/400/cats/WhaleDevops/?43757",
    "description": "Et quia enim distinctio non qui laudantium voluptatem. Cumque minus cum pariatur necessitatibus. Repellat qui provident voluptatum ut. Et sapiente eaque eum ut. Repudiandae eveniet a harum ea totam consectetur. Facere facilis sunt et consequuntur sapiente. A aspernatur placeat tenetur et. Omnis quasi sunt nostrum et velit sint quia. Velit temporibus ut aut ea in repudiandae.",
    "created_at": "1999-04-11T17:37:42.000000Z",
    "updated_at": "2020-08-08T10:41:28.000000Z"
  },
  {
    "id": 2,
    "user_id": 2,
    "image": "https://lorempixel.com/800/400/cats/WhaleDevops/?53905",
    "description": "Quasi ab recusandae molestiae pariatur et ut. Harum dolorum illo aspernatur fugit sequi aut. Modi quasi voluptas ad maxime ducimus quia molestiae maiores. Pariatur quam quam officia expedita. Alias quas aliquid et.",
    "created_at": "1972-03-17T04:01:26.000000Z",
    "updated_at": "2020-08-08T10:41:28.000000Z"
  },

标签: laravellaravel-7

解决方案


你必须阅读Laravel 资源

在构建 API 时,您可能需要一个位于 Eloquent 模型和实际返回给应用程序用户的 JSON 响应之间的转换层。Laravel 的资源类让你可以轻松地将模型和模型集合转换为 JSON。

该文档写得很好,易于理解。它应该有你需要的一切。

你需要阅读写作资源一章,它解释了如何处理关系。


推荐阅读