【发布时间】:2021-07-15 08:44:33
【问题描述】:
好的,我得到了这张桌子
affiliates_referral_clicks
id | affiliate_id | clicks | date
1 | 1 | 10 | 2021-07-14
2 | 1 | 2 | 2021-07-11
3 | 2 | 1 | 2021-07-11
4 | 2 | 14 | 2021-07-10
...
当然,我的模特联盟与推荐点击有关系
附属.php
public function referralClicks(){
return $this->hasMany(AffiliateReferralClick::class,'affiliate_id');
}
现在我想为所有关联公司提供所有点击次数的总和,这些点击次数的日期在给定日期之间。我是这样实现的
$affiliate = Affiliate::with(['referralClicks' => function($query) use($params) {
$query->whereDate('date','>=', $params['dateFrom'])
->whereDate('date','<=', $params['dateTo'])
->select('clicks')
;
}])->get();
foreach ($affiliates as $affiliate){
$affiliate->totalClicks = $affiliate->referralClicks->sum('clicks');
}
这很好用,但由于affiliates_referral_clicks 表太大,请求最终太慢,我认为如果您在不使用 Eloquent 的帮助器的情况下进行查询,您可以获得更快的查询。
所以我的问题是......我怎样才能做同样的事情,但使用原始查询(或任何最有效的方式)?我正在使用 MySQL DB,希望你们能帮助我!
【问题讨论】:
标签: php mysql laravel eloquent query-optimization