Laravel 和刀片错误

Posted

技术标签:

【中文标题】Laravel 和刀片错误【英文标题】:Laravel and blade error 【发布时间】: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

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

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

【问题讨论】:

【参考方案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(); !! 中,顺便说一句,我不需要刀片中的 ;

以上是关于Laravel 和刀片错误的主要内容,如果未能解决你的问题,请参考以下文章

如何根据输入请求规则在 laravel 刀片中显示错误消息

laravel 刀片模板中的覆盖部分抛出未定义的变量错误

Laravel 扩展刀片模板 - $errors 集合中的错误

Laravel 包含主刀片错误

Laravel 5.8刀片,从嵌套对象错误中获取值

如何使用 vuejs 在 laravel 刀片中显示验证错误