我收到这个错误
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/