这是一个购物车的模块,在写的时候感觉判断所有情况太繁琐, 所以想请教一下。
/**
* 购物车添加商品
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// 商品 ID
$ware_id = request()->input('ware_id', 0);
// 商品数量
$ware_num = request()->input('ware_num', 0);
// 定义错误消息
$msg = [
'errno' => 0,
'errmsg' => ''
];
try
{
$user = User::where('user', session('user'))->first();
// 先查找购物车是否已有记录
try
{
$data = [
'ware_id' => $ware_id,
'ware_num' => $ware_num,
'user_id' => $user->id
];
$car = Car::where('user_id', $user->id)->where('ware_id', $ware_id)->where('status', 1)->first();
// 已经存在了商品 只要加num
if ($car)
{
$car->ware_num += $ware_num;
$res = $car->save();
if ($res)
{
$msg['errmsg'] = '添加商品成功!';
}
else
{
$msg['errno'] = 1;
$msg['errmsg'] = '添加商品失败';
}
}
else
{
try
{
$res = Car::create($data);
if ($res)
{
$msg['errmsg'] = '添加商品数量成功!';
}
else
{
$msg['errno'] = 2;
$msg['errmsg'] = '添加商品数量失败';
}
}
catch(QueryException $e)
{
$msg['errno'] = 3;
$msg['errmsg'] = '添加购物车失败, 失败原因:' . $e->getMessage();
}
}
}
catch(QueryException $e)
{
$msg['errno'] = 5;
$msg['errmsg'] = '添加购物车失败, 失败原因:' . $e->getMessage();
}
}
catch(QueryException $e)
{
$msg['errno'] = 4;
$msg['errmsg'] = '添加购物车失败, 失败原因:' . $e->getMessage();
}
return $msg;
}
// 第二种写法:
/**
* 购物车添加商品
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// 商品 ID
$ware_id = request()->input('ware_id', 0);
// 商品数量
$ware_num = request()->input('ware_num', 0);
// 定义错误消息
$msg = [
'errno' => 0,
'errmsg' => ''
];
// user
$user = User::where('user', session('user'))->first();
// 先查找购物车是否已有记录
$data = [
'ware_id' => $ware_id,
'ware_num' => $ware_num,
'user_id' => $user->id
];
$car = Car::where('user_id', $user->id)->where('ware_id', $ware_id)->where('status', 1)->first();
// 不存在了商品 只要加num
if (!$car)
{
$res = Car::create($data);
if ($res)
{
$msg['errmsg'] = '添加商品数量成功!';
}
else
{
$msg['errno'] = 2;
$msg['errmsg'] = '添加商品数量失败';
}
}
return $msg;
}
**我想问的是, 到底有没有必要在每一个情况的 if 和 try? 像**
$user = User::where('user', session('user'))->first();
还用不用判断 $user 是否为 null,因为已经有中间件判断是否登录, 是否还要在这里判断? 请教~~~