2016-05-12 73 views
0

行我在控制器此功能:檢索外循環

public function index() 
     { 

      $call=45; 
      $show = DB::select('select * from users where position="keeper" '); 
      return View('index',['users'=>$show,'call'=>$call]); 
    } 

在視圖我有這一段代碼:

Call: {{$call}}  
    Position: {{$users->position}}  //what is the wrong with this line? everything is fine if i remove this line. 

    @foreach ($users as $u) 
    {{$u->id}} 
    {{$u->name}} 
    {{$u->email}} 
    @endif 

Error: Trying to get property of non-object

相同作品以及與循環:

@foreach($users as $r) 
{{$r->position}} 
@endforeach 
+0

請出示您更多的代碼。如果它們是數組,你應該可以命​​名變量。例如將用戶更改爲$用戶。你也沒有把呼叫轉到視圖中。只有$ show。更改視圖('index',['user'=> $ show,'call'=> $ call]) – Brett

+0

foreach中的代碼正在工作,與上面的代碼行完全相似@ Brett – micky

+0

您看到的錯誤是因爲變量'$ user-> position'在循環外部不可用。你必須在循環中使用它。看着你的查詢,你正在選擇有「門將」職位的用戶。那麼,爲什麼不在你的刀片視圖中打印靜態的「Keeper」? –

回答

0

$show = DB::select('select * from user where position="keeper" ');

此查詢返回多維對象。這就是爲什麼你不能訪問它的財產像這樣$user->position

要解決此問題,嘗試這樣的:

public function index() 
{ 
    $call=45; 
    $show = DB::select('select * from user where position = "keeper" limit 1')[0]; 
    return View('index', ['user' => $show, 'call' => $call]); 
} 
+0

我正在使用raw sql語句,我也必須在其他函數中更改許多代碼。 – micky

+0

甚至'{{$ user-> id}}'不會被外部訪問for循環? – micky

+0

{{$ user-> id}}不會在for循環外部訪問,因爲'user'和'id'之間有另一個'index'。在索引中使用'dd($ user);' –

0

你可以做到這一點的方式..

public function index() 
    { 

    $call=45; 
    $show = DB::table('user')->where("position", "keeper")->first(); 
    return View('index',['user'=>$show,'call'=>$call]); 
}