将媒体库项目注入/合并到 Laravel 中的属于任意关系中

问题描述 投票:0回答:1

我有这样的json:

"member_skills": [
    {
        "id": 69,
        "skill_type_id": 6,
        "title": "Piano",
        "created_at": null,
        "updated_at": null,
        "pivot": {
            "member_id": 4,
            "skill_id": 69,
            "description": "description",
            "other_skill": null
        }
    }
],

关系是这样的:

public function memberSkills(): BelongsToMany
{
    return $this->belongsToMany(Skills::class, MemberSkill::class, null, 'skill_id')->withPivot("description", "other_skill", "name");
}

我有媒体库,我想将这些媒体库项目注入到任何技能的子集中。

每项技能都有媒体。

我该怎么做?

laravel has-many-through has-and-belongs-to-many
1个回答
1
投票

我假设您已正确设置

Skill
模型以与
Media
交互。

您不能在

with('media')
关系定义中简单地使用
BelongsToMany
。相反,您可以在获取媒体时手动将媒体附加到您的技能中,例如,

$member = Member::with('memberSkills')->find($memberId);

$member->memberSkills->each(function ($skill) {
    $skill->media = $skill->getMedia('media_collection');
});

然后你可以返回技能例如Json Response,

return response()->json($member->memberSkills);
© www.soinside.com 2019 - 2024. All rights reserved.