【问题标题】:Extracting a pivot field one level up in laravel在laravel中提取一个向上一级的数据透视字段
【发布时间】:2021-01-01 03:21:38
【问题描述】:

我与数据透视表存在多对多关系。关系中的两个模型是社区角色。在数据透视表中,我有关系中实例的 ID 和一个名为“member_count”的额外字段,用于计算该特定关系中的成员数量。要访问成员计数字段,我在 Community 模型中包含以下函数以始终返回它:

public function personas()
{
    return $this->belongsToMany('App\Persona')->withPivot('member_count');
}

这会在我检索社区时返回以下内容:

{
    "id": "3304806f-9172-4690-b9b7-fa672319eaef",
    "name": "Some Community",
    "site_id": "ee09da48-9ba6-42a9-9f72-4d3ca06ffd2f",
    "internal_external": "internal",
    "created_at": "2020-09-11T14:36:23.000000Z",
    "updated_at": "2020-09-11T14:36:23.000000Z",
    "personas": [
        {
            "id": "1447bc79-f54e-49eb-b33d-acc1c43633e5",
            "name": "Some Persona",
            "created_at": "2020-09-11T14:41:27.000000Z",
            "updated_at": "2020-09-11T14:41:27.000000Z",
            "pivot": {
                "community_id": "3304806f-9172-4690-b9b7-fa672319eaef",
                "persona_id": "1447bc79-f54e-49eb-b33d-acc1c43633e5",
                "member_count": 10
            }
        },
        {
            "id": "ca53ec58-a4e8-4330-a5c3-8dea2235b01f",
            "name": "Another Persona",
            "created_at": "2020-09-11T14:41:15.000000Z",
            "updated_at": "2020-09-11T14:41:15.000000Z",
            "pivot": {
                "community_id": "3304806f-9172-4690-b9b7-fa672319eaef",
                "persona_id": "ca53ec58-a4e8-4330-a5c3-8dea2235b01f",
                "member_count": 5
            }
        }
    ]
},

我想将 member_count 字段上移一级,以便作为 Persona 对象的一部分返回。有没有办法在 Laravel 中内置?

【问题讨论】:

  • 您可以通过使用自定义数据库查询来做到这一点。我认为没有办法直接使用 Eloquent 进行操作

标签: php laravel pivot


【解决方案1】:

认为您可以在急切加载中创建addSelect ....

   $value = Community::where('id', 1)->with(['personas'=> function ($query) {
            $query->join('communities_personas', 'personas.id', 'communities_personas.personas_id')->
            addSelect(['communities_personas.member_count,communities_personas.personas_id']);
        }])->get();

我不确定您的表格和模型名称,请更正错误的...

并确保您还在角色表和数据透视表之间添加选择外键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-06
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多