你好朋友,我需要帮助,我的问题是我需要检查收藏夹表中是否已经存在某些数据,这些数据无法再次添加,例如,想要添加先前注册的促销的用户不允许他再次添加。 但是我需要满足的条件是,如果user_id = 9的用户在“ promocion_id = 30”的收藏夹表中输入了促销,他将无法重新输入该promocion_id,但是如果另一个user_id = 13的用户想要添加相同的promocion_id = 30,那么我可以my table favoritos
$promocionid = request('promocion_id');
$userid = request('user_id');
if($query = PromocionesFavoritasUsers::where('user_id',13)->where('promocion_id',30)->get())
{
return response()->json([$query,
'message' => 'esta promocion ya ha sido agregada anteriormente'],422);
}else{
$agregar = new PromocionesFavoritasUsers;
$agregar->user_id = 13;
$agregar->promocion_id = 30;
$agregar->save();
return response()->json([$agregar,
'message' => 'Se agrego con exito esta promoción'],200);
}
在放置数字的位置,我将放置变量$ promocion id和$ user id(我将这些数字与邮递员一起尝试),但我仅收到消息“此促销活动已被添加”],422 < / p>
答案 0 :(得分:0)
我怀疑您的问题在这里...
if($query = PromocionesFavoritasUsers::where('user_id',13)->where('promocion_id',30)->get())
即使结果为空,该条件仍将评估为true,因此您可能应该对此进行更多扩展。
$query = PromocionesFavoritasUsers::where('user_id',13)->where('promocion_id',30)->get()
if ($query->count() > 0) {
....
}
答案 1 :(得分:0)
您几乎完全正确了。您想检查数据库以查看是否存在针对通过$request
对象发送的两个参数的提升。如果是这样,则不允许进行新的促销。您现在拥有它的方式,由于这些值已经存在于数据库中并且集合将是真实值,因此它将始终返回422。
首先,需要从$request
正确获取变量:
public function whateverYourFunctionIsCalled(Request $request){
$promocionid = $request->get('promocion_id');
$userid = $request->get('user_id');
// Etc
}
然后,在相同的函数中,尽可能多地调用查询:
$exists= PromocionesFavoritasUsers::where('user_id',$userid)->where('promocion_id',$promocionid )->first();
检查是否返回了完全匹配的结果(非null),如果存在,则不要继续前进:
if(isset($exists))
{
return response()->json([$query,
'message' => 'esta promocion ya ha sido agregada anteriormente'],422);
}else{ // Create a new promotion }
答案 2 :(得分:0)
更改
if($query = PromocionesFavoritasUsers::where('user_id',13)->where('promocion_id',30)->get())
到
if(PromocionesFavoritasUsers::where('user_id',13)->where('promocion_id',30)->exists())
如果任何记录满足WHERE条件,则 exists()
返回TRUE
。否则,它将返回FALSE
。