【发布时间】:2020-12-25 00:26:54
【问题描述】:
实际上,我想运行一个循环,在该循环中应该多次更新用户数据。就像我之前有一个查询要获取记录:
select id, pkgid, userid from lendinglogs where status = 1
And I get the result like this:
-------------------------------
id userid pkgid
1 6 1
2 7 2
2 7 2
-------------------------------
foreach ($selectUsers as $row) {
$userid= $row->userid;
//Now I selects the earning value from the table against the userid and pkgid like:
$selectROI = DB::table('genpackageroi')->select('*')->where('userid', '=', $userid)->where('pkgid', '=', $pkgID)->where('pkgcount', '=', $pkgCount)->orderBy('id')->first();
//Returned data
------------------------------------
id userid pkgid amount
1 6 1 0.54
2 7 2 1.23
2 7 2 0.94
-----------------------------------
$value = $selectROI->amount;
//Update users data
$updateUsers = DB::statement("Update users SET earning = '$value' WHERE id = '$userid'");
}
现在用户的收入应该更新为 1.23 + 0.94 = 2.17
但是当我执行此代码时,用户数据只更新一次,只有一个值,例如:1.23,但它应该更新为 2.17。这意味着循环只运行一次。虽然我需要它来更新用户数据 2 次,但我有两个相同的用户 ID,但包 ID 不同。我的意思是应该使用从 genpackageroi 表返回的值来更新用户的收入。
有人知道怎么做吗?
-----------更新----------- --------------
查询:
$selectROI = DB::table('genpackageroi')->select('*')->where('userid', '=', $userid)->where('pkgid', '=', $pkgID)->where('pkgcount', '=', $pkgCount)->orderBy('id')->first();
echo "Userid: ".$selectROI->userid."<BR> Amount: ".$selectROI->amount."<BR>";
结果:
-------------------------
userid amount
15 1.08
15 1.83
--------------------------
现在我们有两个用户 id 并且两者都是相同的,它正在更新用户数据一次,而它应该更新两次,因为我们对同一个用户有两个值。
------------------------------------用户的建议 3532758 -------- ----------------
查询:
$selectROI = DB::table('genpackageroi')->select(DB::raw('sum(amount) as total_amount'))->where('userid', '=', $userid)->where('pkgid', '=', $pkgID)->where('pkgcount', '=', $pkgCount)->groupBy('userid')->first();
dd($selectROI);
结果是:
userid amount
15 199.99999989942
15 399.99999918416
这是完全错误的和未考虑的结果。
【问题讨论】:
-
选择ROI时,可以
groupby user_id和sum the amount。这会给你我假设的总投资回报率
标签: php laravel loops for-loop foreach