首页 > 解决方案 > 在连接的数据透视字段中获取值的总和

问题描述

我试图找出一种很好且有效的方法来获取连接表中的数据透视字段的总和。我有一个 Laravel 项目的以下骨架结构,用户可以从社区储藏室租用物品。

创建项目表:

$table->increments('id');
$table->string('name');
$table->integer('stock')->unsigned();

创建人表:

$table->increments('id');
$table->string('name');

create_item_person_table:

$table->integer('person_id')->unsigned();
$table->integer('item_id')->unsigned();
$table->integer('quantity')->unsigned();

然后我有以下两个关系来定义一个人租了多少物品:

return $this->belongsToMany('App\Item')->withPivot('quantity');
return $this->belongsToMany('App\Person')->withPivot('quantity');

我正在寻找一种简单的方法来查询 Item 模型以确定仍有多少可出租库存可供出租。本质上,“Item.stock”减去连接表中“数量”轴的总和。我希望在我的 Item 模型上创建一个自定义 getAvailableAttribute() 以便于访问我需要访问它的所有地方。

我对基本/中级 Laravel 非常熟悉,但复杂的子查询仍然有点超出我的掌握。

非常感谢!

标签: laravellaravel-7

解决方案


推荐阅读