如何在 Laravel Filament 中获取数据透视表列的总和?

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

我的 Workshop 模型与 User 模型有这种关系。 user_workshop 是数据透视表。

public function users(): BelongsToMany
  {
    return $this->belongsToMany(User::class, 'user_workshop')
    ->withPivot('num_attending', 'price', 'paid_at');
  }

我想获得已售位置(位置)的数量。一个用户可以购买 1 或 2 个位置。在长丝表中,我正在尝试

->sum('users', 'user_workshop.num_attending')

这会产生这个查询

select `workshops`.*, (select sum(`user_workshop`.`num_attending`) from `users` inner join `user_workshop` on `users`.`id` = `user_workshop`.`user_id` where `workshops`.`id` = `user_workshop`.`workshop_id` and `users`.`deleted_at` is null) as `users_sum_users_workshopnum_attending` from `workshops` where `workshops`.`event_id` = 3 and `workshops`.`event_id` is not null limit 10 offset 0

当我直接查询数据库时,我在users_sum_users_workshopnum_attending下得到了

正确
结果。

在灯丝中我正在尝试这个(但该列是空白的)

TextColumn::make('users_sum_users_workshopnum_attending')
          ->sum('users', 'user_workshop.num_attending')
          ->label('Sold'),

有什么想法吗?

mysql laravel-filament
1个回答
1
投票

要显示表中关系的计数,您可以使用

->counts()

TextColumn::make('users_sum_num_attending')->sum('users', 'num_attending'),

更多详情可以查看灯丝柱关系

© www.soinside.com 2019 - 2024. All rights reserved.