Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel迭代在父项上添加数量_Php_Laravel_Loops_Iteration - Fatal编程技术网

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;
            }
        }
    }
}