首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果用户不存在,如何从用户表中检索用户信息并处理错误?

如果用户不存在,如何从用户表中检索用户信息并处理错误?
EN

Stack Overflow用户
提问于 2021-10-10 11:29:28
回答 1查看 39关注 0票数 0

我在一个传销网站上工作,试图在刀片视图中拉出二叉树中的用户,它适用于前三个用户,因为查询中存在这样的用户ID。但对于没有子代的用户,它会抛出错误。如果用户不存在,我如何从用户表中检索用户信息并处理错误?

我的路线:

代码语言:javascript
复制
Route::get('{id}/genealogy-tree', 'UsersController@show_genealogy')->name('genealogy-tree');

我的控制器:

代码语言:javascript
复制
public function show_genealogy($id)
{
    // $headuser = User::findOrFail($id);
    // $headuser_id = $headuser->id;
    if (User::findOrFail($id)->exists()) {
        $headuser = User::findOrFail($id);
        $headuser_id = $headuser->id;
    } else {
        $headuser = null;
        $headuser_id = null;

    }
    #-------------------------------------------------------
    if (User::where('l_id',  $headuser_id)->exists()) {
        $lfu = User::where('l_id',  $headuser_id)->first();
    } else {
        $lfu = null;
    }
    if (User::where('r_id',  $headuser_id)->exists()) {
        $rfu = User::where('r_id',  $headuser_id)->first();
    } else {
        $rfu = null;
    }

    // return view('users.genealogy-tree', compact('headuser','lfu','rfu'));
    #--------------------------------------------------------
    if (User::where('l_id',  $lfu->id)) {
        $lsu = User::where('l_id',  $lfu->id)->first();
    } else {
        $lsu = null;
    }       
    
    if (User::where('r_id',  $lfu->id)->exists()) {
        $rsu = User::where('r_id', $lfu->id)->first();
    }  else {
        $rsu = null;
    } 

    if (User::where('l_id',  $rfu->id)->exists()) {
        $ltu = User::where('l_id',  $rfu->id)->first();
    } else {
        $ltu = null;
    } 
    if (User::where('r_id',  $rfu->id)->exists()) {
        $rtu = User::where('r_id',  $rfu->id)->first();
    } else {
        $rtu = null;
    } 
    #--------------------------------------------------------

    return view('users.genealogy-tree', compact('headuser','lfu','rfu','lsu','rsu','ltu','rtu'));
    // return $lfu;
}

我的观点是:

代码语言:javascript
复制
<div class="table-responsive">
<table class="table" style="align:center; border:o; text-align:center">
    <tr height="150" >
        <td></td>
        @isset($headuser)
        <td colspan="6"> <a href="{{route('genealogy-tree', $headuser->id)}}"><i class="fa fa-user fa-4x" style="color: #45fc03 !important; font-size: 1000%;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$headuser->name ? $headuser->name : 'No Record'}}</p>
        <p>Network Worth: {{$headuser->network_bonus ? $headuser->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$headuser->donation_sum ? $headuser->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$headuser->level ? $headuser->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="6"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 1000%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset
        <td></td>
    </tr>

    <tr height="150">
        @isset($lfu)
        <td colspan="4"> <a href="{{route('genealogy-tree', $lfu->id)}}"><i class="fa fa-user fa-4x" style="color: #b6fc03 !important; font-size: 700%;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$lfu->name ? $lfu->name : 'No Record'}}</p>
        <p>Network Worth: {{$lfu->network_bonus ? $lfu->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$lfu->donation_sum ? $lfu->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$lfu->level ? $lfu->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="4"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 700%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset
        @isset($rfu)
        <td colspan="4"> <a href="{{route('genealogy-tree', $rfu->id)}}"><i class="fa fa-user fa-4x" style="color: #b6fc03 !important; font-size: 700%;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$rfu->name ? $rfu->name : 'No Record'}}</p>
        <p>Network Worth: {{$rfu->network_bonus ? $rfu->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$rfu->donation_sum ? $rfu->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$rfu->level ? $rfu->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="4"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 700%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset
    </tr>

     <tr height="150" style="color: #f4fc03; font-size: 130%;">
       
        @isset($lsu)
        <td colspan="2"> <a href="{{route('genealogy-tree', $lsu->id)}}"><i class="fa fa-user fa-4x" style="color: #f4fc03 !important;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$lsu->name ? $lsu->name : 'No Record'}}</p>
        <p>Network Worth: {{$lfu->network_bonus ? $lfu->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$lsu->donation_sum ? $lsu->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$lsu->level ? $lsu->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="2"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 700%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset
        @isset($rsu)
        <td colspan="2"> <a href="{{route('genealogy-tree', $rsu->id)}}"><i class="fa fa-user fa-4x" style="color: #b6fc03 !important;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$rsu->name ? $rsu->name : 'No Record'}}</p>
        <p>Network Worth: {{$rsu->network_bonus ? $rsu->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$rsu->donation_sum ? $rsu->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$rsu->level ? $rsu->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="2"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 700%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset

        @isset($ltu)
        <td colspan="2"> <a href="{{route('genealogy-tree', $ltu->id)}}"><i class="fa fa-user fa-4x" style="color: #f4fc03 !important;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$ltu->name ? $ltu->name : 'No Record'}}</p>
        <p>Network Worth: {{$ltu->network_bonus ? $ltu->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$ltu->donation_sum ? $ltu->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$ltu->level ? $ltu->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="2"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 700%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset
        @isset($rtu)
        <td colspan="2"> <a href="{{route('genealogy-tree', $rtu->id)}}"><i class="fa fa-user fa-4x" style="color: #b6fc03 !important;"></i>
        <div class="tree_div"> 
        <p>User Name: {{$rtu->name ? $rtu->name : 'No Record'}}</p>
        <p>Network Worth: {{$rtu->network_bonus ? $rtu->network_bonus : 'No Record'}}</p>
        <p>Donations: {{$rtu->donation_sum ? $rtu->donation_sum : 'No Record'}}</p>
        <p>Current Level: {{$rtu->level ? $rtu->level : 'No Record'}}</p>     
        </div></a>
        </td>
        @else
        <td colspan="2"> <a href="#"><i class="fa fa-user fa-4x" style="color: gray !important; font-size: 700%;"></i>
        <div class="tree_div">
            <br> 
        <p>{{'No User'}}</p>   
        </div></a>
        @endisset

    </tr>
   


    <!-- <tr height="150" style="color: #fcb603; font-size: 100%;">
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
        <td> <i class="fa fa-user fa-4x"></i></td>
    </tr> -->
    

</table>
代码语言:javascript
复制
  enter code here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-10 11:33:08

当找不到记录时,first()返回null,您只需在使用变量之前检查是否为null。

您可以使用optional(..)或null函数访问器$var?->function(…)来避免null问题

控制器中的问题是因为您首先尝试查找将$headuser_id与代码匹配的用户:

代码语言:javascript
复制
if (User::where('l_id',  $headuser_id)->exists()) {
    $lfu = User::where('l_id',  $headuser_id)->first();
} else {
    $lfu = null;

您可以将其简化为:

代码语言:javascript
复制
$lfu = User::where('l_id',  $headuser_id)->first();

As first将返回用户或null (如果它们不存在)。

但是您的错误是由代码尝试使用$lfu->id而引起的,而$lfu可能是null

代码语言:javascript
复制
if (User::where('l_id',  $lfu->id)) { ...
                         ^^^^^^^^

您需要检查empty($lfu)或在if中分配变量,当您找到用户时,您可以使用他们的id来搜索其他用户:

代码语言:javascript
复制
$lsu = null;
$ltu = null;

if ($lfu = User::where('l_id',  $headuser_id)->first()) {
    $lsu = User::where('l_id',  $lfu->id)->first();
    $ltu = User::where('l_id',  $rfu->id)->first();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69514743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档