使用Laravel 5.1:给定两个相关模型User
和Item
,通过表Item_User
,如何在直通表中包含特定列 item_count < / strong>使用with
声明?
Item_User
表:
查询:
$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');
}
答案 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
和数据透视数据: