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 和刀片错误的主要内容,如果未能解决你的问题,请参考以下文章