【问题标题】:Laravel and blade errorLaravel 和刀片错误
【发布时间】:2016-08-16 23:02:13
【问题描述】:

我收到这个错误

Trying to get property of non-object (View: /home/yash/website/resources/views/gamesover.blade.php)

我有一个赌桌 users 和一个赌桌 gameover,它们都有各自的模型,即 User 和 Gamesover。

现在在游戏结束表中,我有一列发起者。

当一个get请求被发送到视图时,它在控制器中的代码是

public function gamesover()
{
    $user = Auth::user();
    $games = Gamesover::where('initiator', $user->username)->orWhere('acceptor', $user->username)->get();
    return view('gamesover', compact('games','user'));
}

还有风景

@foreach($games as $game)
{{ DB::table('users')->where('username',$game->initiator)->first()->id }}    
@endforeach

在上面写的刀片语法中给我错误

Trying to get property of non-object (View: /home/yash/website/resources/views/gamesover.blade.php)

** 数据库没有错误,使用的标识符没有拼写和大小写错误

当我使用 laravel 中包含的 dd() 函数尝试此操作时,我没有收到任何错误。此外,当我在修补程序中尝试整个过程时,我也没有收到任何错误。

编辑 1:当我用带引号的用户名替换 $game->initiator 时,我没有收到任何错误,并且如果我将代码更改为

@foreach($games as $game)
{{$initiator = 'yash20'}}  // yash20 is a username already in users database
{{ DB::table('users')->where('username','$initiator')->first()->id }}
@endforeach

然后我也得到错误 请任何人指导我刀片语句中的错误或语法错误。

如果您需要其他详细信息,请在评论中输入我会尽快更新问题。

【问题讨论】:

    标签: php mysql laravel blade


    【解决方案1】:

    您可能正试图从null 获取ID。或者您的查询有时找不到任何用户。

    尝试包装@foreach,获取用户ID和具有以下条件的查询:

    @if(!empty($games))
        @foreach($games as $game)
            @if(!isset($game->initiator))
                {!! $user = DB::table('users')->where('username', $game->initiator)->first() !!}            
                @if(!is_null($user))
                    echo $user->id;
                @endif
            @endif
        @endforeach
    @endif
    

    尝试一步一步去除它们,你会发现问题出在哪里。

    【讨论】:

    • 新错误:- htmlentities() expects parameter 1 to be string, object given
    • 尝试使用{!! !!} 而不是{{ }}。如果没有帮助,则错误与此代码无关,您应该查看 Blade 视图的其他部分。
    • 由于这种刀片语法而发生错误,我通过错误ErrorException in 849c2df06779b7e62731ecd7e75bb8c6ffc9c648.php line 5: 知道这一点,给定视图中的第 5 行是我在问题中询问的行
    • 请发布整个刀片视图并告诉我在您收到 htmlentities() 错误时第 5 行是哪一行。
    • 根据您的编辑,我逐步删除了代码,发现错误仍然在 {!! $user = DB::table('users')->where('username', $game->initiator)->first(); !!} 中,顺便说一句,我不需要刀片中的 ;
    猜你喜欢
    • 2017-07-15
    • 2015-10-24
    • 2016-08-17
    • 2018-04-08
    • 2014-11-08
    • 2019-02-03
    • 2017-10-11
    • 2014-12-03
    • 2014-06-01
    相关资源
    最近更新 更多