英文:
How to get the sum of a pivot table column in Laravel Filament?
问题
我的Workshop模型与User模型有这样的关系,user_workshop是中间表。
{
返回$ this- > belongsToMany(User :: class,'user_workshop')
- > withPivot('num_attending','price','paid_at');
}
我想获得已售出的位置(名额)数量。用户可以购买1或2个名额。在Filament表中,我正在尝试
- >sum('users','user_workshop.num_attending')
这会产生这个查询
选择'研讨会'。*,(选择sum('user_workshop.num_attending') from 'users'内部连接'user_workshop'on'users'.'id'='user_workshop'.'user_id' where'workshops'.'id'='user_workshop'.'workshop_id' and'users'.'deleted_at'为null)作为'users_sum_users_workshopnum_attending' from 'workshops'where'workshops'.'event_id'= 3和'workshops'.'event_id'不为空限制10偏移0
当我直接查询数据库时,在'users_sum_users_workshopnum_attending'下我得到了正确的结果。
在Filament中我正在尝试这样做(但列是空白的)
TextColumn::make('users_sum_users_workshopnum_attending')
- >sum('users','user_workshop.num_attending')
- >label('已售出'),
有什么建议吗?
英文:
My Workshop model has this relationship to User model. user_workshop being the pivot table.
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class, 'user_workshop')
->withPivot('num_attending', 'price', 'paid_at');
}
I would like to get number of places (spots) sold. A user can buy 1 or 2 spots. In Filament table I'm trying to
->sum('users', 'user_workshop.num_attending')
This produces this query
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
And I get the correct result under users_sum_users_workshopnum_attending
when I'm quering the database directly.
In Filament I'm trying this (but the column is blank)
TextColumn::make('users_sum_users_workshopnum_attending')
->sum('users', 'user_workshop.num_attending')
->label('Sold'),
Any ideas?
答案1
得分: 1
显示表格中关系的计数,您可以使用 ->counts()
:
TextColumn::make('users_sum_num_attending')->sum('users', 'num_attending'),
更多详细信息,请查看 Filament Column Relationship。
英文:
To display a count of relationships in the table, you can use ->counts()
TextColumn::make('users_sum_num_attending')->sum('users', 'num_attending'),
for more details, you can check the Filament Column Relationship
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论