我只是不确定如何处理这个问题。这是我必须输出的信息:
最好的方法是什么?我有一个名为“付款”的表和一个名为“referral_earnings”的表(示例)。
付款:
user_id | type (file or link) | amount | created_at (DATETIME)
referral_earnings:
user_id (user receiving the payment) | amount | created_at
我将缓存X分钟查询的结果。我只是不确定创建查询的最佳方法吗?我正在努力的部分是不同的时间框架。
谢谢!
编辑:好的,我现在遇到的问题是区分同一查询中的文件,链接和引荐答案 0 :(得分:2)
使用Query Scope。它们非常方便
class Stats extends Eloquent{
public function scopefileStats($query, $timeFrame){
$query->where('user_id', = ,Auth::user()->id);
$query->where('created_at','>', DB::raw($timeFrame));
$query->where('type','=','FILE');
}
public function scopelinkStats($query,$timeFrame){
$query->where('user_id', = ,Auth::user()->id);
$query->where('created_at','>', DB::raw($timeFrame));
$query->where('type','=','LINK');
}
public function scopereferralStats($query,$timeFrame){
$query->where('user_id', = ,Auth::user()->id);
$query->where('created_at','>', DB::raw($timeFrame));
$query->where('type','=','REFERRAL');
}
}
将数据检索为
Stats::fileStats('date_sub(NOW(), INTERVAL 1 MONTH)')->sum('amount');
Stats::linkStats('date_sub(NOW(), INTERVAL 1 MONTH)')->sum('amount');
Stats::referralStats('date_sub(NOW(), INTERVAL 1 MONTH)')->sum('amount');
这可能是您可以执行此操作的方法之一,但您始终可以根据舒适因素自定义上述代码。
答案 1 :(得分:0)
可能你可以使用Mysql日期/时间函数,
created_at > date_sub(NOW(), INTERVAL 1 MONTH) // for last month
created_at> date_sub(NOW(), INTERVAL 7 DAY) // for last week
created_at> date_sub(NOW(),INTERVAL 1 DAY) // for yesterday
答案 2 :(得分:0)
编写查询(存储过程 - 假设您与mysql配对)并在每次需要从这些表中获取数据时调用该查询(存储过程)。将您的日期时间作为参数传递给存储过程。根据您的需要,您甚至可以在您使用的任何数据库中使用内置的“getDateTime”函数,以避免传递日期时间。
我只是重读了原帖 - 你实际上也传递了其他变量的参数(userid)。
答案 3 :(得分:0)
这样做:
DB::select("
SELECT
SUM(IF(TYPE = 'file', conversions.user_payout, 0)) AS files,
SUM(IF(TYPE = 'link', conversions.user_payout, 0)) AS links,
(SELECT
SUM(amount) FROM referral_earnings WHERE user_id = :user_id1 AND date_sub(NOW(), INTERVAL 7 DAY)
) AS referrals
FROM
conversions
WHERE
conversions.user_id = :user_id2
AND date_sub(NOW(), INTERVAL 7 DAY)
", [
'user_id1' => 3,
'user_id2' => 3
]);
感谢:
https://stackoverflow.com/a/18362519/1073419
https://stackoverflow.com/a/14906832/1073419
感谢所有帮助!