实际上,我想运行一个循环,其中用户数据应该多次更新。就像我有一个查询来获得之前的记录:
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。这意味着循环只运行一次。虽然我需要它来更新用户数据两次,但有两个用户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
这是一个完全错误和未经预料的结果。
解决方案2:您的更新语句。添加到数据库中的现有值。
$updateUsers = DB::statement("Update users SET earning = earning + '$value' WHERE id = '$userid'");
解决方案1,您认为它返回错误的结果根据我的评论,我认为这样的事情对你来说是可行的。
在金额列上求和以获得总金额
$selectROI = DB::table('genpackageroi')->select(DB::raw('sum(amount) as total_amount'))->where('userid', '=', $userid)->where('pkgid', '=', $pkgID)->where('pkgcount', '=', $pkgCount)->first();
现在$selectROI->total_amount
应该将这两个值相加。