Php laravel迭代在父项上添加数量
我的意思是,我有一个转诊系统,每个Php laravel迭代在父项上添加数量,php,laravel,loops,iteration,Php,Laravel,Loops,Iteration,我的意思是,我有一个转诊系统,每个家长id都有家长和家长的家长id,直到最后一个家长,也就是高级 假设用户已经购买了一个项目并且成功,现在我调用insertEarnings函数将相应的金额插入他的parent\u id,如果他的parent\u id是Junior他的parent\u id将获得100 问题是这样开始的,如果他的父母没有等级意味着没有活动,那么插入到他的父母id的金额将经过下一个等级,即溢价,因此溢价将没有250总数,之后,继续将金额正常插入保费的父id,该id为高级-他将获得相
家长id
都有家长
和家长的家长id
,直到最后一个家长
,也就是高级
假设用户已经购买了一个项目并且成功,现在我调用insertEarnings
函数将相应的金额插入他的parent\u id
,如果他的parent\u id
是Junior
他的parent\u id
将获得100
问题是这样开始的,如果他的父母没有等级
意味着没有活动
,那么插入到他的父母id
的金额将经过下一个等级,即溢价
,因此溢价
将没有250
总数,之后,继续将金额正常插入保费的父id
,该id为高级
-他将获得相应的金额
,该金额为200
,因为他下方的等级
是保费
存在,插入将一直进行,直到到达最后一个级别,即Senior
想象一下,它在父级循环,直到到达最后一级-高级
队伍井然有序
Junior
Premium
Advanced
Senior
使用相应的金额值进行排序
Junior - 100
Premium - 150
Advanced - 200
Senior - 250
用户表
+------+------------+-------------+------------+
| id | username | parent_id | rank |
+------+------------+-------------+------------+
| 1 | john | NULL | Senior |
| 2 | jane | 1 | Advanced |
| 3 | josh | 2 | Premium |
| 4 | joey | 3 | Junior |
| 5 | jade | 4 | Basic |
+----------------------------------------------+
代码
本例中未使用$user\u id
,但有一个问题中未包含的用法,因为这不是主要问题。您的具体问题是什么?什么是它不应该做的?你是什么意思@mrhnI多次阅读了这个问题,但没有说明什么是不起作用的?你只是在解释你的问题?发生了什么?你期望发生什么?如果你读对了,你就会明白。问题是这样开始的,如果他的父母没有一个等级意味着不活跃,那么插入到他父母的id中的金额将通过下一个等级,即保费,这样保费将不会有250,在此之后,继续将金额正常插入保费的上级id,即预付款-他将获得相应的金额,即200,因为他下面的级别(即保费)是存在的,插入将一直进行,直到到达最后一个级别,即SeniorSuper,但是stackoverflow不是为了解决您的问题,而是为了修复一些不起作用的代码,我重复一下什么不起作用?
$user_id = 5; // jade
$parent_id = 4;
// call the function to insert the earnings
self::insertEarnings($user_id,$parent_id);
private function insertEarnings($user_id,$parent_id) {
if ($parent_id > 0) {
$user_parent = $parent_id;
$has_parent = true;
// start iteration
while($has_parent == true){
$account = User::where('id',$user_parent)->first();
$amount = 0;
if ($account->rank == "Junior" ) {
$amount = 100;
} elseif ($account->rank == "Premium") {
$amount = 150;
// for example this user/parent does not exist the amount(150) for him will be added to the next rank which is the Advance
} elseif ($account->rank == "Advanced") {
$amount = 200;
} elseif ($account->rank == "Senior") {
$amount = 250;
// set to false to stop the iteration
$has_parent = false;
}
$earnings = new Earnings;
$earnings->user_id = $account->id;
$earnings->amount = $amount;
$earnings->save();
$next_parent = User::where('id',$user_parent)->first();
$user_parent = $next_parent->parent_id;
if($user_parent == 0){
$has_parent = false;
}
}
}
}