2017-06-08 71 views
-1

我是新來的Laravel並試圖找出爲什麼我的網頁之一是沒有從數據庫中提取數據。使用基於Laracasts項目的設置在本地運行。我在Laravel 5.4上運行OS X Sierra上的PHP 7和MySQL。laravel數據庫通數據刀片

我得到這個錯誤:未定義的變量:#標籤(在我hashtags.blade.php文件)

我有這樣的代碼hashtags.blade.php,旨在從數據庫中提取的條目:

<h2>Your Hashtags</h2> 

    <table> 
     <tr> 
      <th>Hashtag</th> 
      <th>List Name</th> 
      <th>List Members Added</th> 
     </tr> 

    @foreach($hashtags as $hashtag) 

     <tr> 
      <td>{{ $hashtag -> tagname }}</td> 
      <td>{{ $hashtag -> listname }}</td> 
      <td>Count</td> 
     </tr> 

    @endforeach 

    </table> 

在我web.php routes文件:

Route::get('/hashtags', function() { 

    $hashtags = DB::table('hashtags')->get(); 
    return view('hashtags'); 
}); 

我必須通過.ENV文件和Laravel整體連接來連接數據庫似乎是工作,只是沒有這個網頁上。我的印象是,web.php中的代碼定義了變量$ hashtags並將其傳遞給hashtags.blade.php。顯然我在這裏錯過了一些東西。

我搜索,發現關於將數據傳遞到葉片文件的一些其他問題,但沒有很喜歡這個問題。謝謝!

+3

嚴重的是,它寫在每laravel教程:'返回視圖( '#標籤',[ '#標籤'=> $#標籤]);' –

回答

2

你需要傳遞變量的模板。嘗試:

return view('hashtags', [ 
    'hashtags' => $hashtags 
]); 

return view('hashtags', compact('hashtags')); 
+0

我選擇了第二個選項 - 添加緊湊('hashtags')); - 它像一個魅力。非常感謝!我花了幾個小時試圖弄清楚這一點! – Eric

1

你需要傳遞的變量在web.php路由文件

試試這個

Route::get('/hashtags', function() { 
    $hashtags = DB::table('hashtags')->get(); 
    return view('hashtags',compact('hashtags')); 
}); 
1

可以在刀片傳遞數據3種方式

1. return view('hashtags', ['hashtags' => $hashtags]); 
2 return view('hashtags')->with('hashtags', $hashtags); 
3. return view('hashtags', compact('hashtags')); 
1

好像你不及格$hashtags到您的視圖。我會建議在您的Routes文件中使用compact。 當你移動到一個控制器時,compact也可以很好地工作。

<h2>Your Hashtags</h2> 
<table> 
    <tr> 
     <th>Hashtag</th> 
     <th>List Name</th> 
     <th>List Members Added</th> 
    </tr> 
@foreach($hashtags as $hashtag) 
    <tr> 
     <td>{{ $hashtag-> tagname }}</td> 
     <td>{{ $hashtag-> listname }}</td> 
     <td>Count</td> 
    </tr> 
@endforeach 
</table> 

而且你Routes文件:

Route::get('/hashtags', function() { 
    $hashtags = DB::table('hashtags')->get(); 
    return view('hashtags', compact('hashtags')); 
}); 

如果你有一個Hashtag模型,你可以這樣做: (注意如何使用Hashtag模型,而不是DB

use App\Hashtag; // Add this at the routes files top 

Route::get('/hashtags', function() { 
    $hashtags = Hashtag::all(); 
    return view('hashtags', compact('hashtags')); 
}); 
相關問題