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

fivyi3re  于 2022-12-17  发布在  PHP
关注(0)|答案(5)|浏览(118)

下面是我的控制器代码:

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),它会显示"尝试获取非对象的属性“,我还在代码中提到了此错误。
我想显示一条消息,如果我输入任何ID,如1234,则用户ID不存在。我还设置了条件if(empty($$groupDetails)),但未显示正确的错误消息。
您的帮助将不胜感激!

z31licg0

z31licg01#

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

$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);
}
9jyewag0

9jyewag02#

此行之后:

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

你可以添加这样的内容:

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

vqlkdk9b3#

如果要显示用户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']);
    }  
 }
ovfsdjhp

ovfsdjhp4#

我在你的代码中发现了两个问题,如下所示:-首先,检查是否存在与组的关系或不使用dd().如果你得到的数据正确,然后检查是否groupdetails是空的或不.
第二个问题是你用的是empty函数检查groupdetails是否为空,然后又用if条件检查groupdetails是否存在,是一个,是一样的,不需要用两个if条件检查groupdetails是否为空,你只需要

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

mutmk8jj5#

您可以使用验证

$request->validate([
'user_id' => 'exists:App\Models\User,id'
]);

这将自动给予未找到消息
您可以在此找到更多信息:https://laravel.com/docs/9.x/validation

相关问题