如何根据条件显示消息-使用Laravel

时间:2019-05-19 13:08:34

标签: php laravel conditional-statements

这是我的控制器代码:

 public function getGroupAgainstMember(Request $request)
{
    $user_id = $request->input('user_id');
    $user =User::find($user_id);
    $groupDetails=$user->groups; // Trying to get property of non-object

    if (empty($groupDetails)) {
        $resultArray = ['status' => false, 'message' => 'Group details.', 'data' => []];
        return \Illuminate\Support\Facades\Response::json($resultArray, 200);
    }
    if ($groupDetails)
        $resultArray = ['status' => true, 'message' => 'Group & Members details!', 'groups' => $groupDetails];
    else
        $resultArray = ['status' => false, 'message' => 'Group details not found.', 'data' => []];
    return \Illuminate\Support\Facades\Response::json($resultArray, 200);
}

我正在获取针对用户ID的记录,如果用户ID存在,它将向我显示针对该用户ID的数据,如果我输入随机用户ID(如1233),则表示尝试获取非对象的属性,我也提到了此错误我的代码来自哪里。

如果我输入1234之类的任何ID,我想显示一条消息,指出用户ID不存在,我也设置了条件if(empty($$ groupDetails)),但未显示正确的错误消息。

我们将非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

问题是您试图获取null属性。当用户不存在时,$user不是对象,也没有任何道具

$user = User::find($user_id);
$groupDetails = ($user) ? $user->groups : collect([]); // if user exists get groups, if not - empty collection
  

我要显示一条用户ID不存在的消息

那么您可以那样做:

$user = User::find($user_id);
if (null === $user) { // or just if (!$user)
    $resultArray = ['status' => false, 'message' => 'User does not exist.', 'data' => []];
    return \Illuminate\Support\Facades\Response::json($resultArray, 200);
}

答案 1 :(得分:0)

此行之后:

$user =User::find($user_id);

您可以添加以下内容:

if(!$user){
    return response()->json(["message"=>"User not found"]);
}

答案 2 :(得分:0)

如果要显示一条消息,提示用户ID不存在

 public function getGroupAgainstMember(Request $request){

    $post = $request->all();

    $user = User::find($post['user_id']);

    if($user){
         // your code
    } else {
        return response()->json(['status' => false, 'message' => 'User not found']);
    }  
 }