gpt4 book ai didi

php - Laravel sum() 集合上的方法返回表中所有项目的结果

转载 作者:行者123 更新时间:2023-11-29 22:20:03 26 4
gpt4 key购买 nike

给出下表

gallery
+----+---------------+--------------+---------+
| id | gallery_title | viewcount | user_id |
+----+---------------+--------------+---------+
| 1 | Animals | 10 | 1 |
| 2 | Cars | 5 | 1 |
| 3 | Houses | 2 | 2 |
+----+---------------+--------------+---------+

user
+----+----------+
| id | username |
+----+----------+
| 1 | Bob |
| 2 | James |
+----+----------+

以及以下类

class Gallery extends Model
....
public function user()
{
return $this->belongsTo('App\User');
}

class User extends Model
....
public function galleries()
{
return $this->hasMany('App\Gallery');
}

调用 $galleryCollections= Auth::user()->galleries; 返回一个集合数组,我可以在其中迭代

foreach ($galleryCollections as $galleryCollection)
{
$viewcount += $galleryCollection->viewcount;
}

print $viewcount; #returns 15

到目前为止,一切都按预期正常运行。

但是,如果我不小心调用了 $galleryCollection->sum('viewcount')(迭代中的最后一个值),则返回值为 17,因为它是只需运行以下 SQL select sum('viewcount') 作为来自 'gallery' 的聚合

我正在努力了解这里到底发生了什么。这几乎就像是在画廊类本身上调用“sum()”方法,而不传递任何“where”值。我至少希望它调用 Collection 上的 sum() 方法,但它会返回到数据库。

是否因为我的 Gallery 类没有实现“sum()”方法,因此它使用父模型类并忽略 Gallery 类?

最佳答案

如果想通过sql来统计,那么:

Auth::user()->galleries()->sum('viewCount');

但是,Auth::user()->galleries->sum('viewCount');将对集合Auth::user()->galleries求和>。Auth::user()->galleries() 是一个 queryBuilder,而 Auth::user()->galleries 是该用户的图库集合。

关于php - Laravel sum() 集合上的方法返回表中所有项目的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com