/ / Laravel Datenbank Pass Datenklinge - PHP, MySQL, Laravel

Laravel Datenbank Pass Datenklinge - PHP, MySQL, Laravel

Ich bin neu in Laravel und versuche herauszufinden, warumEine meiner Seiten zieht keine Daten aus der Datenbank. Lokale Ausführung mit einem Setup basierend auf dem Projekt in Laracasts. Ich bin auf Laravel 5.4 mit PHP 7 und MySQL auf OS X Sierra.

Ich bekomme diesen Fehler: Undefinierte Variable: Hashtags (in meiner hashtags.blade.php Datei)

Ich habe diesen Code hashtags.blade.php, entworfen, um Einträge aus einer Datenbank zu ziehen:

<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>

In meiner web.php Routen Datei:

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

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

Ich habe die Datenbank über die angeschlossen.Env-Datei und die gesamte Verbindung in Laravel scheint zu funktionieren, nur nicht auf dieser Seite. Ich hatte den Eindruck, dass der Code in web.php die Variable $ hashtags definiert und an hashtags.blade.php weitergibt. Anscheinend fehlt mir hier etwas.

Ich suchte und fand einige andere Fragen über die Weitergabe von Daten an die Blade-Dateien, aber nichts dergleichen. Vielen Dank!

Antworten:

2 für die Antwort № 1

Sie müssen die Variable an die Vorlage übergeben. Versuchen:

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

oder

return view("hashtags", compact("hashtags"));

1 für die Antwort № 2

Sie können Daten in Blade auf drei Arten übergeben

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

1 für die Antwort № 3

Sie müssen die Variable in der Datei web.php route übergeben

Versuche dies

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

1 für die Antwort № 4

Scheint so, als würdest du nicht vorübergehen $hashtags zu deiner Ansicht. Ich würde vorschlagen, zu verwenden compact in Ihrer Routendatei. Wenn Sie zu einem Controller wechseln, compact wird dort auch gut funktionieren.

<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>

Und dein Routes Datei:

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

Wenn Sie eine haben Hashtag Modell, könnte man so machen: (Beachten Sie, wie Sie das verwenden Hashtag Modell, dann DB)

use AppHashtag; // Add this at the routes files top

Route::get("/hashtags", function () {
$hashtags = Hashtag::all();
return view("hashtags", compact("hashtags"));
});