2016-04-23 111 views
1

我收到此错误Laravel和刀片错误

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

我有一个表用户和一张桌子gamesovers并且两者都具有各自的型号太多,即用户和Gamesover。

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

当一个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 

然后过我得到的错误 请任何人可以指导我是什么刀片声明中出现错误或者存在一些语法错误。

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

回答

0

也许你正试图从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 

试图消除他们一步一步,你会发现问题出在哪里。

+0

新错误:''htmlentities()期望参数1是字符串,对象给定' –

+0

尝试使用'{!! !!}'而不是'{{}}'。如果没有帮助,错误与此代码无关,您应该查看刀片视图的其他部分。 –

+0

由于这种刀片语法出现错误,我知道这是由错误'ErrorException in 849c2df06779b7e62731ecd7e75bb8c6ffc9c648.php line 5: '而给定视图中的第5行是我在问题 –