如何使用 laravel 5.8 在控制器中创建条件?
Posted
技术标签:
【中文标题】如何使用 laravel 5.8 在控制器中创建条件?【英文标题】:how to make a condition in the controller with laravel 5.8? 【发布时间】:2019-07-22 19:51:47 【问题描述】:你好朋友我有这个问题...我有表奖,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 积分,那么他不会交换它(他将我发送到 else)......如果我想要的是在里面某些字段添加和减去某些值,除了显示消息 这是我在 mysql 数据库中的表
【问题讨论】:
所以,我不明白:'如果用户有 1000 积分,而奖品价值 500 积分,那么他不会交换它'。如果用户积分足够,应该可以领取奖品吧?是这个问题吗? 是的,这就是问题 你为什么要否认这一点: if( ! $reclamo->exists() ) ... ?因为这个,你要去 else 子句 另外:$reclamo 变量的返回值是多少?我认为你应该检查一下。做一个 dd($reclamo);看看返回了什么 我这样说(我正在测试),因为如果我让它正常 if ($ reclama-> count ()> 0) ... 代码反过来工作(如果一份礼物价值 500 分,而用户有 200 分,则可以兑换)所以用 if (! $ claim-> count ()> 0) 解决...(我知道这样做是错误的) 【参考方案1】:我无法理解这一行中的第二个条件(->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']);
希望对你有帮助。
【讨论】:
听从你的建议,给我这个错误Property [vago_puntos] does not exist on the Eloquent builder instance.
我通过添加 -> firsts(); 解决了这个问题在查询中...但我仍然遇到与以前的代码相同的错误:( ..即使我有 100 分,用户也可以领取 500 分的奖励【参考方案2】:
朋友尝试了很多次,所以解决了
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,那么我不能这样做如果我离开它
【讨论】:
以上是关于如何使用 laravel 5.8 在控制器中创建条件?的主要内容,如果未能解决你的问题,请参考以下文章