尝试获取 属性 的非对象 Laravel 5.4

Trying to get property of non-object Laravel 5.4

嗨,伙计,我总是收到 laravel 5.4 的错误消息。 我正在创建一个成员列表...但是当我使用 @foreach 时它说

ErrorException in 6163a8b030c7474bc8eaad359ab99eb61ebdb127.php line 38:
Trying to get property of non-object (View: E:\wamp64\www\gplspring2017\resources\views\admin\memberlist.blade.php)

这是我的控制器

public function listmember(Request $request, $idteam)
{
    $teams = DB::table('gpl_team')->where('gpl_team_id', $idteam)->first();
    $count = count($teams);

    if (!$count) {
        return redirect('404');
    } else {
        return view('/admin/memberlist', ['team' => $teams]);
    }
}

这是我的查看代码:

<table class="table table-striped">
    <tr>
        <td style="width:15%;"></td>
        <td style="width:25%;">Summoners Name</td>
        <td style="width:25%;">Name</td>
        <td style="width:25%;">Role</td>
        <td style="width:10%;"></td>
    </tr>
    <?php
    $qmember = DB::table('team_member')->where('gpl_team_id', $team->gpl_team_id)->first();

    $counting = count($qmember);

    ?>
    @if (! $counting)
    <tr>
        <td colspan="4"> No Recored! </td>
    </tr>
    @else
    @foreach($qmember as $get_member)
    <tr>
        <td><img src="{{ $get_member->member_pic }}" /></td>
        <td></td>
        <td></td>
        <td></td>
        <td>
            <a href="" data-toggle="tooltip" title="Edit Team"><div class="glyphicon glyphicon-pencil"></div></a> |
            <a href="" data-toggle="tooltip" title="Delete Team"><div class="glyphicon glyphicon-trash"></div></a>
        </td>
    </tr>
    @endforeach
    @endif
</table>

当我删除 foreach 时,代码可以正常工作..但我尝试添加 @foreach($qmember as $get_member) 它不再工作了...

检查这一行:

$qmember = DB::table('team_member')->where('gpl_team_id', $team->gpl_team_id)->first();

当您使用 first() 时,它不会 return 而是 Std Class object。如果需要,请使用 get()

使用 first() 方法,您只能从数据库中获取一条与 ID 匹配的记录(第一个匹配)。你需要使用 get().

控制器:

public function listmember(Request $request, $idteam)
    {

        $teams = DB::table('gpl_team')->where('gpl_team_id', $idteam)->get(); //Use get() if you expect more than one result not first()
        $count = count($teams);

        if(! $count)
        {
            return redirect('404');
        }
        else
        {
            return view('/admin/memberlist', ['teams' => $teams]);// this team variable must be used in the blade
        }
    }

查看:

<table class="table table-striped">
    <tr>
        <td style="width:15%;"></td>
        <td style="width:25%;">Summoners Name</td>
        <td style="width:25%;">Name</td>
        <td style="width:25%;">Role</td>
        <td style="width:10%;"></td>
    </tr>
    <?php 

        $qmember = DB::table('team_member')->where('gpl_team_id', $team->gpl_team_id)->first();

        $counting = count($qmember); 
    ?>
    @if (! $counting)
    <tr>
        <td colspan="4"> No Recored! </td>
    </tr>
    @else
       @foreach($teams as $team)
            <tr>
                <td><img src="{{ $team['member_pic'] }}" /></td>
                <td></td>
                <td></td>
                <td></td>
                <td>
                    <a href="" data-toggle="tooltip" title="Edit Team"><div class="glyphicon glyphicon-pencil"></div></a> |
                    <a href="" data-toggle="tooltip" title="Delete Team"><div class="glyphicon glyphicon-trash"></div></a>
                </td>
            </tr>
        @endforeach
    @endif
</table>