【问题标题】:Show relationship data in bulk批量显示关系数据
【发布时间】:2020-08-12 10:17:45
【问题描述】:

我正在编写一个 API,我的主题和 cmets 与之相关。我的愿望是显示所有主题,同时也显示属于这些主题的 cmets。我使用 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 的 cmets。我该如何自定义?

{
    "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"
  },

【问题讨论】:

  • 您的第一个表是帖子的表还是只是一个错误?我的第一件事是评论表,第二个表可能是帖子表。

标签: laravel laravel-7


【解决方案1】:

你必须阅读Laravel Resources

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

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

您需要阅读Writing Resources 章节,其中解释了如何处理关系。

【讨论】:

    【解决方案2】:

    您必须进行两项更改。

    1)从post表中删除post_id并将其放入comment表中。

    2)编写查询

    Post::with('comment','user')->get();
    

    【讨论】:

    • 谢谢。我通过查看有关资源的文档解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多