你好朋友,我有这个问题...我有桌奖,users_profile ..在奖中,我保留图像,描述和分数 因此,在我的控制器中,我想做的是...如果用户有必要的积分来领取该奖项,那么他就可以领取;如果他的积分不足,那么他将显示一条错误消息
public function reclamarpremios(Request $request)
{
$vago_puntos = request('vago_puntos');
$premioID = request('id');
$puntaje = request('puntaje');
$perfil_users_app_id = request('perfil_users_app_id');
$us = UserAppPerfil::where('id',$perfil_users_app_id);
$reclamo = Premios::where('id',$premioID)->where('puntos','=',$vago_puntos);
if(!$reclamo->exists())
{
$us->decrement('vago_puntos',$puntaje);
$reclamo->increment('veces_reclamado');
return response()->json([$us,$reclamo,'message' => 'Felicidades has reclamado esta promocion, el equipo de vagos estara en contacto con tigo para obtorgarte tu premio'],200);
}else{
return response()->json(['message'=>'No tienes los suficientes vagos puntos'],422);
}
}
此代码有效一半,因为例如,如果用户有1000点积分,而奖品价值500点积分,那么他就不会交换它(他将我发送给其他人)...如果我想要的是某些字段除了显示消息外还添加和减去某些值 这是我在MySQL数据库
中的表答案 0 :(得分:0)
我无法理解此行中的第二个条件(->where('puntos','=',$vago_puntos)
):
$reclamo = Premios::where('id',$premioID)->where('puntos','=',$vago_puntos);
用户要兑换的奖品是id
等于$premioID
的奖品,不是吗?如果是这样,则您不需要该条件。
public function reclamarpremios(Request $request)
{
$vago_puntos = request('vago_puntos');
$premioID = request('id'); //The prize id
$puntaje = request('puntaje');
$perfil_users_app_id = request('perfil_users_app_id');
$us = UserAppPerfil::where('id',$perfil_users_app_id)->first();
//Get the prize the user wants to redeem:
$reclamo = Premios::where('id',$premioID)->first();
if ($reclamo != null) { // if the prize exists
$requiredPoints = $reclamo->puntos; //The required amount of points for that prize
$userPoints = $us->puntos; //The user available points
if ($userPoints >= $requiredPoints) {
// if the user has the required amount of points, can redeem the prize:
$us->decrement('vago_puntos',$puntaje);
$reclamo->increment('veces_reclamado');
return response()->json([$us,$reclamo,'message' => 'Felicidades has reclamado esta promocion, el equipo de vagos estara en contacto con tigo para obtorgarte tu premio'],200);
}
else {
return response()->json(['message'=>'No tienes los suficientes vagos puntos'],422);
}
}else{
return response()->json(['message' => 'This prize is not available']);
}
}
希望有帮助。
答案 1 :(得分:0)
尝试了很多次的朋友,解决了
public function reclamarpremios(Request $request)
{
$vago_puntos = request('vago_puntos');
$premioID = request('id');
$perfil_users_app_id = request('perfil_users_app_id');
$us = UserAppPerfil::where('id',$perfil_users_app_id)->first();
if($reclamo = Premios::where('id',$premioID)->where('puntos','<=',$us->vago_puntos)->first())
{
$us->decrement('vago_puntos',$reclamo->puntos);
$us->increment('premios_ganados');
$reclamo->increment('veces_reclamado');
return response()->json([$reclamo,$us,'message'=>'Felicidades has reclamado esta promocion, el equipo de vagos estara en contacto con tigo para obtorgarte tu premio'],200);
}else{
return response()->json(['message'=>'No tienes los suficientes vagos puntos'],422);
}
}
我只是有点怀疑...这是否意味着> =更大且相等,这是否意味着<=更少且相等?.... 有趣的是,如果我像这样>> ...离开它,我碰巧尽管我扣了200点,而奖品却价值500,但我可以索取,如果我的分数超过500,那我就做不到如果我将其保留为<=,那么它是否符合我想要的逻辑.....我不知道是否有人可以向我解释为什么会发生这种情况?