php - Laravel 和 Blade 错误

标签 php mysql laravel laravel-blade

我收到这个错误

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

我有一个表 users 和一个表 gameovers,它们都有各自的模型,即 User 和 Gameover。

现在在 gameovers 表中我有一列发起者。

当一个get请求被发送到 View 时,它在 Controller 中的代码是

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

和 View

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

上面写的blade语法报错

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

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

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

编辑 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

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

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

最佳答案

可能您正在尝试从 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

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

关于php - Laravel 和 Blade 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808652/

相关文章:

php - 我想使用 mysql old_password 但无法完成配置

PHP MySQL 外部数据库连接超时

php - 优化包含正则表达式的查询以进行排序

php - Laravel Passport 试图获取非对象的属性 'secret'

javascript - JQuery 图像选择器不工作

PHP 和 MySQL - 如何使用 order by desc 和 limit 1 更新单个表中的单行

php - 数组php和数据库mysql保存数据

Laravel 5 命令调度程序,如何传入选项

php - Laravel 5.7 - 队列作业太慢

PHP如何获取精确的argv(当前命令的精确参数)?