这是在php laravel-5.4 mysql中注册新用户代码
public function store(Request $request)
{
$epincheck = $request->epin;
if (Epin::where('epin', '=', '75656565')->exists()) {
// DB::table('epins')->where('epin', $epincheck)->delete();
$post = new Admin();
$post->name = $request->name;
$post->email = $request->email;
$post->plan = $request->plan;
$post->epin = $epincheck;
$post->ref = $request->ref;
$post->mobile = $request->mobile;
$post->password = bcrypt($request->password);
$post->save();
//other trims
$referal_user = $request->ref;
$referal_email = DB::table('admins')->where('mobile', $referal_user)->first();
$referal_id = $referal_email->id;
$update_ref_user = Admin::find($referal_id);
$previous_users_left = $referal_email->user_left;
$previous_users_right = $referal_email->user_right;
$direct_referal = $referal_email->direct_referal;
$list_all_right_user = $referal_email->user_listing_right;
$list_all_left_user = $referal_email->user_listing_left;
$left_count = $referal_email->no_user_left;
$right_count = $referal_email->no_user_right;
$direct_count = $referal_email->no_direct_referal;
if(!$previous_users_right && $previous_users_left )
{
$update_ref_user->user_right = $request->email ;
$update_ref_user->no_user_right = $right_count+1 ;
$update_ref_user->user_listing_right = $request->email . ' , ' . $list_all_right_user ;
$update_ref_user->save();
$last_updated_id = $update_ref_user->id;
$update_up_line = DB::table('admins')->where('id', $last_updated_id);
$update_up_line_list = $update_up_line->id;
// $update_up_line = Admin::find($last_updated_id);
/* $update_up_line_update->user_listing_right = $request->email;
$update_up_line-> save();*/
//looping get referal id -> find referee -> update ;
//find last referal id -> find referee -> update ;
//find referal id -> find referee -> update ;
//find referal id -> find referee -> update ;
//find referal id -> find referee -> update ;
//when there is no ref_no loop ends
//stop when count ends;
}
if(!$previous_users_left)
{
$update_ref_user->user_left = $request->email ;
$update_ref_user->no_user_left = $left_count + 1 ;
$update_ref_user->user_listing_left = $request->email . ' , ' . $list_all_left_user ;
$update_ref_user->save();
}
if($previous_users_left && $previous_users_right)
{
$update_ref_user->direct_referal = $direct_referal . ' , ' . $request->email ;
$update_ref_user->no_direct_referal = $direct_count +1 ;
$update_ref_user->save();
}
//sms gatewat
/*Send SMS using PHP*/
return redirect('/admin/login');
// \Session::flash('msg', 'Changes Saved.' );
}
else {
echo "You Have Entered Invalid Pin";
}
}
注册新用户时,他以注册形式输入参考代码。 我希望当新用户注册mobile->'123'和参考号'987'时 步骤1)找到新注册用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后将$ 200(它是货币)的50%加到他的收入中,在数据库字段名称中添加以前用户的名字= “user_under”
步骤2)找到前一个用户的“参考号”然后在所有注册用户的“移动”字段中搜索“参考号”,然后将$ 200(它是货币)的30%添加到他的收入中,在数据库中添加以前用户的名字字段名称=“user_under”
步骤3)找到先前用户的“参考号”,然后在所有注册用户的“移动”字段中搜索“参考号”,然后将$ 200(它是货币)的10%加到他的收入中,并在之前添加用户的名字。数据库字段名称=“user_under”
步骤4)找到先前用户的“参考编号”,然后在所有注册用户的“移动”字段中搜索“参考编号”,然后在数据库字段名称中添加以前用户的名称=“user_under”
******步骤4继续,直到参考编号=空/无值
我无法理解如何应用逻辑
#####编辑@jeffrey
这里是第5级的手动代码需要在递归时自动使用
public function store(Request $request)
{
$post = new Admin();
$post->name = 'nill';
$post->email = $request->email;
$post->plan = 'uuiuii';
$post->epin = '9999';
$post->ref = $request->ref;
$post->mobile = $request->mobile;
$post->password = bcrypt($request->password);
$post->save();
$referal_user = $request->ref;
$referal_email = DB::table('admins')->where('mobile', $referal_user)->first();
$referal_id = $referal_email->id;
$right_count = $referal_email->no_user_right;
$list_all_right_user = $referal_email->user_listing_right;
//first update
$update_ref_user = Admin::find($referal_id);
$get_user_previous = $referal_email->user_listing_right;
$update_ref_user->user_right = $request->email;
$update_ref_user->no_user_right = $right_count + 1;
$update_ref_user->user_listing_right = $request->email . ' , ' . $get_user_previous;
$update_ref_user->save();
$last_updated_id = $update_ref_user->ref;
///next
///
// echo $last_updated_id;
$ref_previous2 = $last_updated_id;
if($ref_previous2 ) {
$referal_email2 = DB::table('admins')->where('mobile', $last_updated_id)->first();
$get_user_previous2 = $referal_email2->user_listing_right;
$update_ref_user_id_2 = $referal_email2->id;
$update_ref_user2 = Admin::find($update_ref_user_id_2);
$update_ref_user2->user_right = 'jhkkkj';
$update_ref_user2->no_user_right = $right_count + 1;
$update_ref_user2->user_listing_right = $request->email . ' , ' . $get_user_previous2;
$update_ref_user2->save();
$ref_previous3 = $update_ref_user2->ref;
if($ref_previous3 ) {
$last_updated_id3 = $update_ref_user2->ref;
$referal_email3 = DB::table('admins')->where('mobile', $last_updated_id3)->first();
$get_user_previous3 = $referal_email3->user_listing_right;
$update_ref_user_id_3 = $referal_email3->id;
$update_ref_user3 = Admin::find($update_ref_user_id_3);
$update_ref_user3->user_right = 'jhkkkj';
$update_ref_user3->no_user_right = $right_count + 1;
$update_ref_user3->user_listing_right = $request->email . ' , ' . $get_user_previous3;
$update_ref_user3->save();
$ref_previous4 = $update_ref_user3->ref;
if($ref_previous4 ) {
$last_updated_id4 = $update_ref_user3->ref;
$referal_email4 = DB::table('admins')->where('mobile', $last_updated_id4)->first();
$get_user_previous4 = $referal_email4->user_listing_right;
$update_ref_user_id_4 = $referal_email4->id;
$update_ref_user4 = Admin::find($update_ref_user_id_4);
$update_ref_user4->user_right = 'jhkkkj';
$update_ref_user4->no_user_right = $right_count + 1;
$update_ref_user4->user_listing_right = $request->email . ' , ' . $get_user_previous4;
$update_ref_user4->save();
$ref_previous5 = $update_ref_user4->ref;
if($ref_previous5 ) {
$last_updated_id5 = $update_ref_user4->ref;
$referal_email5 = DB::table('admins')->where('mobile', $last_updated_id5)->first();
$get_user_previous5 = $referal_email5->user_listing_right;
$update_ref_user_id_5 = $referal_email4->id;
$update_ref_user5 = Admin::find($update_ref_user_id_5);
$update_ref_user5->user_right = 'jhkkkj';
$update_ref_user5->no_user_right = $right_count + 1;
$update_ref_user5->user_listing_right = $request->email . ' , ' . $get_user_previous5;
$update_ref_user5->save();
}
}
}
}
//next
//4th update
///five
///
///
return redirect('/admin/register2');
}
#############这是解决方案
$referal_user = $request->ref;
$referal_email = DB::table('admins')->where('mobile', $referal_user)->first();
$referal_id = $referal_email->id;
$right_count = $referal_email->no_user_right;
$list_all_right_user = $referal_email->user_listing_right;
$ref = $request->ref;
$mobile = $request->mobile;
$user_listing_left = $referal_email->user_listing_left;
while( $refUser = Admin::where('mobile', $ref)->first() )
{
$refUser->user_left = $request->email;
$refUser->user_listing_left = $refUser->user_listing_left . "," .$request->email;
$refUser->save();
// Update $ref to find the next guy
$ref = $refUser->ref;
}
答案 0 :(得分:1)
我完全不理解这个问题,但我会试一试。
Recursive
是关键词。您似乎想要上升参考树,并根据您的等级,向该人添加一定数量的$。但我不明白你的意思在数据库字段名称中添加以前用户的名字=" user_under" 该字段也不可见......
$percentages = [50, 30, 10, 5, 2, 1, 0.5];
$iteration = 0;
$ref = $request->ref;
while( $refUser = Admin::where('ref', $ref)->first() && $percentages[$iteration] )
{
$refUser->income += floor( 200 * $percentages[$iteration++] );
$refUser->save();
// Update $ref to find the next guy
$ref = $refUser->ref;
}
while循环的第二个条件是确保如果$ percentageages数组比数据库中的树短,它就不会中断并退出给钱。你当然可以扩展数组。
我希望这是你提出的问题,否则就发表评论。