【问题标题】:Add additional data to paginated resource laravel向分页资源 laravel 添加附加数据
【发布时间】:2021-01-05 18:13:44
【问题描述】:

这是 API 中带有分页数据的 GET 请求的响应:

{
"current_page": 1,
"data": [
    {
        "id": 11,
        "user_id": 1,
        "text": "kek",
        "path": "public/gifs/mfNEs0XOK7X3ovIYdMwW67lemI4oRAos0ufxNeBm.gif",
        "created_at": "2020-09-18T01:32:47.000000Z",
        "updated_at": "2020-09-18T01:32:47.000000Z"
    },
    {
        "id": 12,
        "user_id": 1,
        "text": "kek",
        "path": "public/gifs/bFwa5My7NlkdtTFiqn6FXLzpcbaL9703phDEYQ5i.gif",
        "created_at": "2020-09-18T01:38:55.000000Z",
        "updated_at": "2020-09-18T01:38:55.000000Z"
    }
],
// ... rest of the pagination data
}

我需要在每个模型中插入一个tags 字段,其值来自多对多关系。

我是否需要迭代集合并手动插入每个值,或者 laravel 是否有内置方法?

当前功能:

public function index()
{
    $expressions = $this->expression->paginate(20);
    
    return response()->json($expressions);
}

【问题讨论】:

  • 你有从 Expression 到 Tag 的关系设置吗?
  • 是的,我要添加的数据来自$expression->tags();,这是多对多

标签: php laravel


【解决方案1】:

加载关系,使其成为模型序列化输出的一部分:

$expressions = $this->expression->with('tags')->paginate(20);

假设$this->expression 是您的模型的一个实例。

“当 Eloquent 模型转换为 JSON 时,其加载的关系将自动作为属性包含在 JSON 对象上。”

Laravel 7.x Docs - Eloquent - Relationships - Serialization - Serializing to JSON

Laravel 7.x Docs - Eloquent - Relationships - Eager Loadingwith

【讨论】:

    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多