包含相关模型表中的特定列

时间:2016-02-14 18:37:00

标签: mysql laravel laravel-5 relational-database

使用Laravel 5.1:给定两个相关模型UserItem,通过表Item_User,如何在直通表中包含特定列 item_count < / strong>使用with声明?

Item_User表:

enter image description here

查询:

    $userGameProfile = User::with([
        'items' => function($query) use ($profile_id) {
            $query->with(['phrases'])->where('profile_id', '=', $profile_id);
        }])->find($id);

向此查询添加->select('item_count')仅返回项目计数,而不返回相关的项目对象。添加->select('*')可以获取我想要的项目和字段,但会破坏我需要的嵌套with(['phrases'])关系,以便为项目获取相关的短语。

有人告诉我应该使用withPivot,但我找不到关于如何使用它的文档或示例。

最好,我想将此添加到关系中,而不是每个查询。

模型

User

public function items()
{
    return $this->belongsToMany(Item::class, 'user_item');
}

Item

public function users()
{
    return $this->belongsToMany(User::class, 'user_item');
}
public function phrases()
{
    return $this->belongsToMany(Phrase::class, 'item_phrase');
}

Phrase

public function items()
{
    return $this->belongsToMany(Item::class, 'item_phrase');
}

1 个答案:

答案 0 :(得分:0)

This article重点介绍了如何在pivot table中添加其他信息。

User模型中,我知道我始终希望在item_count数据透视表中添加user_items,因此您可以将withPivot添加到items的关系中}:

public function items()
{
    return $this->belongsToMany(Item::class, 'user_item')
        ->withPivot('item_count');
}

User现在返回items和数据透视数据:

enter image description here