{"id":64988,"date":"2024-01-30T12:48:29","date_gmt":"2024-01-30T11:48:29","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=64988&#038;preview=true&#038;preview_id=64988"},"modified":"2024-02-07T10:29:08","modified_gmt":"2024-02-07T09:29:08","slug":"laravel-crud","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/","title":{"rendered":"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt"},"content":{"rendered":"<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> ist ein beliebtes <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-laravel\/\">PHP-Framework<\/a> f\u00fcr die Entwicklung moderner und dynamischer Webanwendungen in der heutigen schnelllebigen und sich st\u00e4ndig weiterentwickelnden Webentwicklungslandschaft. Eine seiner Kernfunktionen ist <a href=\"https:\/\/laravel.com\/docs\/10.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Eloquent<\/a>, ein <a href=\"https:\/\/en.wikipedia.org\/wiki\/Object%E2%80%93relational_mapping\" target=\"_blank\" rel=\"noopener noreferrer\">objektrelationaler Mapper<\/a> (ORM), der es Entwicklern erm\u00f6glicht, effizient CRUD-Operationen (Create, Read, Update und Delete) in einer Datenbank durchzuf\u00fchren.<\/p>\n<p>Dieses Tutorial zeigt dir, wie du diese Operationen in deiner Laravel-Anwendung mit dem Eloquent ORM von Laravel durchf\u00fchrst und wie du deine Laravel CRUD-Anwendung mit <a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">MyKinsta<\/a> bereitstellst.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>CRUD-Funktionalit\u00e4t in Laravel<\/h2>\n<p>CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Sie erm\u00f6glichen es dir, die grundlegendsten und wichtigsten Datenbankoperationen auszuf\u00fchren, z. B. neue Datens\u00e4tze zu erstellen, bestehende Datens\u00e4tze zu lesen, sie zu aktualisieren und zu l\u00f6schen. Diese Operationen sind entscheidend f\u00fcr die Funktionalit\u00e4t jeder <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#laravel\">Laravel-Anwendung<\/a>, die mit einer Datenbank interagiert.<\/p>\n<p>Eloquent bietet eine einfache und intuitive M\u00f6glichkeit, mit der Datenbank zu interagieren, indem es die Komplexit\u00e4t der Datenbankverwaltung reduziert, damit du dich auf die Entwicklung deiner Anwendung konzentrieren kannst. Die eingebauten Methoden und Klassen erm\u00f6glichen dir ein einfaches CRUD von Datens\u00e4tzen in der Datenbank.<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Um diesem Tutorial folgen zu k\u00f6nnen, musst du folgende Voraussetzungen erf\u00fcllen:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.apachefriends.org\/download.html\" target=\"_blank\" rel=\"noopener noreferrer\">XAMPP<\/a><\/li>\n<li><a href=\"https:\/\/getcomposer.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a><\/li>\n<li><a href=\"https:\/\/my.kinsta.com\/login\/?lang=de\">Ein MyKinsta-Konto<\/a><\/li>\n<li>Ein Konto bei <a href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, <a href=\"https:\/\/gitlab.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab<\/a> oder <a href=\"https:\/\/bitbucket.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket<\/a>, um deinen Code zu ver\u00f6ffentlichen<\/li>\n<li><a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bootstrap Version 5<\/a><\/li>\n<\/ul>\n<h3>Schritte<\/h3>\n<ol start=\"1\">\n<li>Installiere Laravel und erstelle eine neue Anwendung<\/li>\n<li>Erstelle eine Datenbank<\/li>\n<li>Erstelle eine Tabelle<\/li>\n<li>Erstelle einen Controller<\/li>\n<li>Richte das Modell ein<\/li>\n<li>F\u00fcge eine Route hinzu<\/li>\n<li>Blade-Dateien generieren<\/li>\n<li>Einsetzen und Testen deiner CRUD-Anwendung<\/li>\n<\/ol>\n<p>Der <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\" target=\"_blank\" rel=\"noopener noreferrer\">vollst\u00e4ndige Code<\/a> des Tutorials hilft dir bei der Umsetzung.<\/p>\n<h2>Laravel installieren und eine neue Anwendung erstellen<\/h2>\n<p>\u00d6ffne dein Terminal, in dem du deine Laravel-Anwendung erstellen m\u00f6chtest, und befolge die folgenden Schritte.<\/p>\n<ol start=\"1\">\n<li>Um Laravel zu installieren, f\u00fchre aus:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">composer global require laravel\/installer<\/code><\/pre>\n<ol start=\"2\">\n<li>Um eine neue Laravel-Anwendung zu erstellen, f\u00fchre aus:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">laravel new crudposts<\/code><\/pre>\n<h2>Datenbank erstellen<\/h2>\n<p>Um eine neue Datenbank f\u00fcr deine Anwendung zu erstellen:<\/p>\n<ol start=\"1\">\n<li>Starte den Apache- und den MySQL-Server im XAMPP-Kontrollpanel und besuche <code>http:\/\/localhost\/phpmyadmin<\/code> in deinem Browser.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Klicke in der linken Seitenleiste auf <strong>Neu<\/strong>. Du solltest das Folgende sehen:<\/li>\n<\/ol>\n<figure style=\"width: 1134px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/phpmyadmin-form-create-db.png\" alt=\"Das Formular zum Erstellen einer Datenbank\" width=\"1134\" height=\"315\"><figcaption class=\"wp-caption-text\">Das Formular zum Erstellen einer Datenbank<\/figcaption><\/figure>\n<ol start=\"3\">\n<li>F\u00fcge einen Datenbanknamen hinzu und klicke auf <strong>Erstellen<\/strong>.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Bearbeite die <strong>.env-Datei<\/strong> deiner Anwendung im Stammverzeichnis deiner Laravel-Anwendung. Sie enth\u00e4lt alle Umgebungsvariablen, die von der Anwendung verwendet werden. Finde die Variablen mit dem Pr\u00e4fix <code>DB_<\/code> und bearbeite sie mit deinen Datenbankzugangsdaten:<\/li>\n<\/ol>\n<pre><code class=\"language-env\">DB_CONNECTION=\nDB_HOST=\nDB_PORT=\nDB_DATABASE=\nDB_USERNAME=\nDB_PASSWORD=<\/code><\/pre>\n<h2>Eine Tabelle erstellen<\/h2>\n<p>Die Datenzeilen in deiner Anwendung werden in Tabellen gespeichert. F\u00fcr diese Anwendung brauchst du nur eine Tabelle, die du mit <a href=\"https:\/\/laravel.com\/docs\/10.x\/migrations\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel-Migrationen<\/a> erstellst.<\/p>\n<ol start=\"1\">\n<li>Um eine Tabelle zu erstellen und eine Migrationsdatei mit Laravels Kommandozeilenschnittstelle Artisan zu erzeugen, f\u00fchre aus:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:migration create_posts_table<\/code><\/pre>\n<p>Der obige Befehl erstellt eine neue Datei,<\/p>\n<p><strong>yyyy_mm_dd_hhmmss_create_posts_table.php<\/strong>, in <strong>database\/migrations<\/strong>.<\/p>\n<ol start=\"2\">\n<li>\u00d6ffne die Datei <strong>yyyy_mm_dd_hhmmss_create_posts_table.php<\/strong> und definiere in der Funktion up die Spalten, die du in deiner Datenbanktabelle haben m\u00f6chtest:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">public function up()\n{\n  Schema::create('posts', function (Blueprint $table) {\n    $table-&gt;id();\n    $table-&gt;string('title');\n    $table-&gt;text('body');\n    $table-&gt;timestamps();\n  });\n}<\/code><\/pre>\n<p>Dieser Code legt fest, was die Tabelle posts enth\u00e4lt. Sie hat vier Spalten: <code>id<\/code>, <code>title<\/code>, <code>body<\/code>, und <code>timestamps<\/code>.<\/p>\n<ol start=\"3\">\n<li>F\u00fchre die Migrationsdateien im Ordner <strong>database\/migrations<\/strong> aus, um Tabellen in der Datenbank zu erstellen:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan migrate<\/code><\/pre>\n<p>Die Ausgabe sieht wie folgt aus:<\/p>\n<figure style=\"width: 614px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-crud-run-migrations.png\" alt=\"Ausf\u00fchren der Migrationen\" width=\"614\" height=\"403\"><figcaption class=\"wp-caption-text\">Ausf\u00fchren der Migrationen<\/figcaption><\/figure>\n<ol start=\"4\">\n<li>Gehe zu der Datenbank, die du zuvor erstellt hast, um zu best\u00e4tigen, dass du die Tabellen erstellt hast:<\/li>\n<\/ol>\n<figure style=\"width: 1053px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-crud-posts-table.png\" alt=\"erstellte Tabellen\" width=\"1053\" height=\"209\"><figcaption class=\"wp-caption-text\">erstellte Tabellen<\/figcaption><\/figure>\n<h2>Erstelle einen Controller<\/h2>\n<p>Der Controller enth\u00e4lt alle Funktionen zum CRUD von Beitr\u00e4gen aus der Datenbank.<\/p>\n<p>Erstelle eine Controller-Datei innerhalb deiner Laravel-Anwendung mit Artisan:<\/p>\n<pre><code class=\"language-sh\">php artisan make:controller PostController --api<\/code><\/pre>\n<p>Wenn du diesen Befehl ausf\u00fchrst, wird eine Datei<strong> PostController.php<\/strong> in <strong>app\/Http\/Controllers<\/strong> erstellt, mit Boilerplate-Code und leeren Funktionsdeklarationen <code>index<\/code>, <code>store<\/code>, <code>show<\/code>, <code>update<\/code> und <code>destroy<\/code>.<\/p>\n<h2>Funktionen erstellen<\/h2>\n<p>Als n\u00e4chstes erstellst du die Funktionen, die die Daten speichern, indizieren, aktualisieren, zerst\u00f6ren, erstellen, anzeigen und bearbeiten.<\/p>\n<p>Du kannst sie in der Datei <strong><a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\/blob\/main\/app\/Http\/Controllers\/PostController.php\" target=\"_blank\" rel=\"noopener noreferrer\">app\/Http\/Controller\/PostController.php<\/a><\/strong> einf\u00fcgen (siehe unten).<\/p>\n<h3>Die Funktion <code>store<\/code><\/h3>\n<p>Die Funktion <code>store<\/code> f\u00fcgt einen Beitrag in die Datenbank ein.<\/p>\n<p>Scrolle zur Funktion <code>store<\/code> und f\u00fcge den folgenden Code innerhalb der leeren geschweiften Klammern ein:<\/p>\n<pre><code class=\"language-php\">$request-&gt;validate([\n  'title' =&gt; 'required|max:255',\n  'body' =&gt; 'required',\n]);\nPost::create($request-&gt;all());\nreturn redirect()-&gt;route('posts.index')\n  -&gt;with('success','Post created successfully.');<\/code><\/pre>\n<p>Dieser Code nimmt ein Objekt, das den Titel und den Text des Beitrags enth\u00e4lt, pr\u00fcft die Daten, f\u00fcgt einen neuen Beitrag zur Datenbank hinzu, wenn die Daten g\u00fcltig sind, und leitet den Benutzer mit einer Erfolgsmeldung zur Homepage weiter.<\/p>\n<h3>Die Funktion <code>index<\/code><\/h3>\n<p>Die Funktion <code>index<\/code> holt alle Beitr\u00e4ge aus der Datenbank und sendet die Daten an den <strong><a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\/blob\/main\/resources\/views\/posts\/index.blade.php\" target=\"_blank\" rel=\"noopener noreferrer\">posts.index<\/a><\/strong> seite.<\/p>\n<h3>Die <code>update<\/code> Funktion<\/h3>\n<p>Die &lt;<code>update<\/code> Funktion enth\u00e4lt die <code>id<\/code> des zu aktualisierenden Beitrags, den neuen Beitrag <code>title<\/code> und die <code>body<\/code>. Nach der Validierung der Daten findet sie den Beitrag mit der gleichen <code>id<\/code>. Wenn er gefunden wird, aktualisiert die Funktion <code>update<\/code> den Beitrag in der Datenbank mit den neuen <code>title<\/code> und <code>body<\/code>. Dann leitet sie den Nutzer mit einer Erfolgsmeldung zur Startseite weiter.<\/p>\n<h3>Die <code>destroy<\/code> Funktion<\/h3>\n<p>Die Funktion <code>destroy<\/code> findet einen Beitrag mit dem angegebenen <code>id<\/code>, l\u00f6scht ihn aus der Datenbank und leitet den Benutzer mit einer Erfolgsmeldung auf die Startseite weiter.<\/p>\n<p>Die oben genannten Funktionen sind die Funktionen, die zum CRUD von Beitr\u00e4gen aus der Datenbank verwendet werden. Du musst jedoch weitere Funktionen innerhalb des Controllers definieren, um die ben\u00f6tigten Seiten in <strong>resources\/views\/posts\/<\/strong> zu rendern.<\/p>\n<h3>Die Funktion <code>create<\/code><\/h3>\n<p>Die Funktion <code>create<\/code> rendert die <strong><a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\/blob\/main\/resources\/views\/posts\/create.blade.php\" target=\"_blank\" rel=\"noopener noreferrer\">resources\/views\/posts\/create.blade.php<\/a><\/strong> seite, die das Formular zum Hinzuf\u00fcgen von Beitr\u00e4gen zur Datenbank enth\u00e4lt.<\/p>\n<h3>Die <code>show<\/code> Funktion<\/h3>\n<p>Die Funktion <code>show<\/code> findet einen Beitrag mit dem angegebenen <code>id<\/code> in der Datenbank und zeigt die Seite <strong><a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\/blob\/main\/resources\/views\/posts\/show.blade.php\" target=\"_blank\" rel=\"noopener noreferrer\">resources\/views\/posts\/show.blade.php<\/a><\/strong> datei mit dem Beitrag.<\/p>\n<h3>Die <code>edit<\/code> Funktion<\/h3>\n<p>Die Funktion <code>edit<\/code> findet einen Beitrag mit der angegebenen <code>id<\/code> in der Datenbank und rendert die Datei <strong><a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\/blob\/main\/resources\/views\/posts\/edit.blade.php\" target=\"_blank\" rel=\"noopener noreferrer\">resources\/views\/posts\/edit.blade.php<\/a><\/strong> datei mit den Beitragsdetails in einem Formular.<\/p>\n<h2>Das Modell einrichten<\/h2>\n<p>Das Modell <code>Post<\/code> interagiert mit der Tabelle <strong>posts<\/strong> in der Datenbank.<\/p>\n<ol start=\"1\">\n<li>Um ein Modell mit Artisan zu erstellen, f\u00fchre aus:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:model Post<\/code><\/pre>\n<p>Dieser Code erstellt eine Datei <strong>Post.php<\/strong> im Ordner <strong>App\/Models<\/strong>.<\/p>\n<ol start=\"2\">\n<li>Erstelle ein Array <code>&lt;fillable<\/code>. F\u00fcge den folgenden Code innerhalb der Klasse <code>Post<\/code> und unterhalb der Zeile <code>use HasFactory;<\/code> ein<\/li>\n<\/ol>\n<pre><code class=\"language-php\">protected $fillable = [\n  'title',\n  'body',\n];<\/code><\/pre>\n<p>Dieser Code erstellt ein <code>fillable<\/code> Array, mit dem du von deiner Laravel-Anwendung aus Elemente zur Datenbank hinzuf\u00fcgen kannst.<\/p>\n<ol start=\"3\">\n<li>Verbinde das Modell <code>Post<\/code> mit der Datei <strong>PostController.php<\/strong>. \u00d6ffne die Datei <strong>PostController.php<\/strong> und f\u00fcge die folgende Zeile unter <code>use IlluminateHttpRequest;<\/code> ein. Sie sieht wie folgt aus:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse AppModelsPost;<\/code><\/pre>\n<p>Die Datei <strong>PostController.php<\/strong> sollte jetzt wie folgt aussehen:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppHttpControllers;\nuse IlluminateHttpRequest;\nuse AppModelsPost;\nclass PostController extends Controller\n{\n  \/**\n   * Display a listing of the resource.\n   *\n   * @return IlluminateHttpResponse\n   *\/\n  public function index()\n  {\n    $posts = Post::all();\n    return view('posts.index', compact('posts'));\n  }\n  \/**\n   * Store a newly created resource in storage.\n   *\n   * @param  IlluminateHttpRequest  $request\n   * @return IlluminateHttpResponse\n   *\/\n  public function store(Request $request)\n  {\n    $request-&gt;validate([\n      'title' =&gt; 'required|max:255',\n      'body' =&gt; 'required',\n    ]);\n    Post::create($request-&gt;all());\n    return redirect()-&gt;route('posts.index')\n      -&gt;with('success', 'Post created successfully.');\n  }\n  \/**\n   * Update the specified resource in storage.\n   *\n   * @param  IlluminateHttpRequest  $request\n   * @param  int  $id\n   * @return IlluminateHttpResponse\n   *\/\n  public function update(Request $request, $id)\n  {\n    $request-&gt;validate([\n      'title' =&gt; 'required|max:255',\n      'body' =&gt; 'required',\n    ]);\n    $post = Post::find($id);\n    $post-&gt;update($request-&gt;all());\n    return redirect()-&gt;route('posts.index')\n      -&gt;with('success', 'Post updated successfully.');\n  }\n  \/**\n   * Remove the specified resource from storage.\n   *\n   * @param  int  $id\n   * @return IlluminateHttpResponse\n   *\/\n  public function destroy($id)\n  {\n    $post = Post::find($id);\n    $post-&gt;delete();\n    return redirect()-&gt;route('posts.index')\n      -&gt;with('success', 'Post deleted successfully');\n  }\n  \/\/ routes functions\n  \/**\n   * Show the form for creating a new post.\n   *\n   * @return IlluminateHttpResponse\n   *\/\n  public function create()\n  {\n    return view('posts.create');\n  }\n  \/**\n   * Display the specified resource.\n   *\n   * @param  int  $id\n   * @return IlluminateHttpResponse\n   *\/\n  public function show($id)\n  {\n    $post = Post::find($id);\n    return view('posts.show', compact('post'));\n  }\n  \/**\n   * Show the form for editing the specified post.\n   *\n   * @param  int  $id\n   * @return IlluminateHttpResponse\n   *\/\n  public function edit($id)\n  {\n    $post = Post::find($id);\n    return view('posts.edit', compact('post'));\n  }\n}<\/code><\/pre>\n<h2>Routes hinzuf\u00fcgen<\/h2>\n<p>Nachdem du die Controller-Funktionen und das <code>Post<\/code> Modell erstellt hast, musst du Routen f\u00fcr deine Controller-Funktionen hinzuf\u00fcgen.<\/p>\n<ol start=\"1\">\n<li>\u00d6ffne <strong>routes\/web.php<\/strong> und l\u00f6sche die Boilerplate-Route, die die Anwendung erstellt hat. Ersetze sie durch den folgenden Code, um die Controller-Funktionen mit ihren jeweiligen Routen zu verbinden:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ returns the home page with all posts\nRoute::get('\/', PostController::class .'@index')-&gt;name('posts.index');\n\/\/ returns the form for adding a post\nRoute::get('\/posts\/create', PostController::class . '@create')-&gt;name('posts.create');\n\/\/ adds a post to the database\nRoute::post('\/posts', PostController::class .'@store')-&gt;name('posts.store');\n\/\/ returns a page that shows a full post\nRoute::get('\/posts\/{post}', PostController::class .'@show')-&gt;name('posts.show');\n\/\/ returns the form for editing a post\nRoute::get('\/posts\/{post}\/edit', PostController::class .'@edit')-&gt;name('posts.edit');\n\/\/ updates a post\nRoute::put('\/posts\/{post}', PostController::class .'@update')-&gt;name('posts.update');\n\/\/ deletes a post\nRoute::delete('\/posts\/{post}', PostController::class .'@destroy')-&gt;name('posts.destroy');<\/code><\/pre>\n<ol start=\"2\">\n<li>Um die Routen zu verbinden, \u00f6ffne <strong>app\/Http\/Controllers\/PostController.php<\/strong> und f\u00fcge die folgende Zeile unter der Zeile <code>use IlluminateSupportFacadesRoute;<\/code> ein:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesRoute;\nuse AppHttpControllersPostController;<\/code><\/pre>\n<p>Die Datei <strong>routes\/web.php<\/strong> sollte jetzt wie folgt aussehen:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse IlluminateSupportFacadesRoute;\nuse AppHttpControllersPostController;\n\/\/ returns the home page with all posts\nRoute::get('\/', PostController::class .'@index')-&gt;name('posts.index');\n\/\/ returns the form for adding a post\nRoute::get('\/posts\/create', PostController::class . '@create')-&gt;name('posts.create');\n\/\/ adds a post to the database\nRoute::post('\/posts', PostController::class .'@store')-&gt;name('posts.store');\n\/\/ returns a page that shows a full post\nRoute::get('\/posts\/{post}', PostController::class .'@show')-&gt;name('posts.show');\n\/\/ returns the form for editing a post\nRoute::get('\/posts\/{post}\/edit', PostController::class .'@edit')-&gt;name('posts.edit');\n\/\/ updates a post\nRoute::put('\/posts\/{post}', PostController::class .'@update')-&gt;name('posts.update');\n\/\/ deletes a post\nRoute::delete('\/posts\/{post}', PostController::class .'@destroy')-&gt;name('posts.destroy');<\/code><\/pre>\n<h2>Blade-Dateien generieren<\/h2>\n<p>Jetzt, wo du die Routen hast, kannst du die <a href=\"https:\/\/kinsta.com\/de\/blog\/laravel-blade\/\">Laravel-Blade-Dateien<\/a> erstellen. Bevor du Artisan verwendest, um die Blade-Dateien zu erzeugen, musst du den Befehl <code>make:view<\/code> erstellen, mit dem du die <strong>Blade.php-Dateien<\/strong> erzeugen kannst.<\/p>\n<ol start=\"1\">\n<li>F\u00fchre den folgenden Code in der CLI aus, um eine <strong>MakeViewCommand-Befehlsdatei<\/strong> im Ordner <strong>app\/Console\/Commands <\/strong>zu erstellen:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:command MakeViewCommand<\/code><\/pre>\n<ol start=\"2\">\n<li>Erstelle einen Befehl zum Erzeugen von <strong>.blade.php-Dateien<\/strong> aus der CLI, indem du den Code in der <strong>MakeViewCommand-Datei<\/strong> durch den folgenden ersetzst:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppConsoleCommands;\nuse IlluminateConsoleCommand;\nuse File;\nclass MakeViewCommand extends Command\n{\n  \/**\n   * The name and signature of the console command.\n   *\n   * @var string\n   *\/\n  protected $signature = 'make:view {view}';\n  \/**\n   * The console command description.\n   *\n   * @var string\n   *\/\n  protected $description = 'Create a new blade template.';\n  \/**\n   * Execute the console command.\n   *\n   * @return mixed\n   *\/\n  public function handle()\n  {\n    $view = $this-&gt;argument('view');\n    $path = $this-&gt;viewPath($view);\n    $this-&gt;createDir($path);\n    if (File::exists($path))\n    {\n        $this-&gt;error(\"File {$path} already exists!\");\n        return;\n    }\n    File::put($path, $path);\n    $this-&gt;info(\"File {$path} created.\");\n  }\n  \/**\n   * Get the view full path.\n   *\n   * @param string $view\n   *\n   * @return string\n   *\/\n  public function viewPath($view)\n  {\n    $view = str_replace('.', '\/', $view) . '.blade.php';\n    $path = \"resources\/views\/{$view}\";\n    return $path;\n  }\n  \/**\n   * Create a view directory if it does not exist.\n   *\n   * @param $path\n   *\/\n  public function createDir($path)\n  {\n    $dir = dirname($path);\n    if (!file_exists($dir))\n    {\n        mkdir($dir, 0777, true);\n    }\n  }\n}<\/code><\/pre>\n<h3>Eine Startseite erstellen<\/h3>\n<p>Als n\u00e4chstes erstellst du deine Startseite. Die Homepage ist die Datei <strong>index.blade.php<\/strong>, in der alle Beitr\u00e4ge aufgelistet sind.<\/p>\n<ol start=\"1\">\n<li>Um die Startseite zu erstellen, f\u00fchre aus:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.index<\/code><\/pre>\n<p>Dadurch wird ein Ordner &#8220; <strong>posts&#8220;<\/strong> im Ordner &#8220; <strong>\/resources\/views&#8220;<\/strong> und eine Datei &#8220; <strong>index.blade.php<\/strong> &#8220; darunter erstellt. Der resultierende Pfad ist <strong>\/resources\/views\/posts\/index.blade.php<\/strong>.<\/p>\n<ol start=\"2\">\n<li>F\u00fcge den folgenden Code in die Datei <strong>index.blade.php<\/strong> ein:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n  &lt;meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"&gt;\n  &lt;link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.0-alpha1\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\"\nintegrity=\"sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3\/Jr59b6EGGoI1aFkw7cmDA6j6gD\" crossorigin=\"anonymous\"&gt;\n  &lt;title&gt;Posts&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;nav class=\"navbar navbar-expand-lg navbar-light bg-warning\"&gt;\n    &lt;div class=\"container-fluid\"&gt;\n      &lt;a class=\"navbar-brand h1\" href={{ route('posts.index') }}&gt;CRUDPosts&lt;\/a&gt;\n      &lt;div class=\"justify-end \"&gt;\n        &lt;div class=\"col \"&gt;\n          &lt;a class=\"btn btn-sm btn-success\" href={{ route('posts.create') }}&gt;Add Post&lt;\/a&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n  &lt;\/nav&gt;\n  &lt;div class=\"container mt-5\"&gt;\n    &lt;div class=\"row\"&gt;\n      @foreach ($posts as $post)\n        &lt;div class=\"col-sm\"&gt;\n          &lt;div class=\"card\"&gt;\n            &lt;div class=\"card-header\"&gt;\n              &lt;h5 class=\"card-title\"&gt;{{ $post-&gt;title }}&lt;\/h5&gt;\n            &lt;\/div&gt;\n            &lt;div class=\"card-body\"&gt;\n              &lt;p class=\"card-text\"&gt;{{ $post-&gt;body }}&lt;\/p&gt;\n            &lt;\/div&gt;\n            &lt;div class=\"card-footer\"&gt;\n              &lt;div class=\"row\"&gt;\n                &lt;div class=\"col-sm\"&gt;\n                  &lt;a href=\"{{ route('posts.edit', $post-&gt;id) }}\"\n            class=\"btn btn-primary btn-sm\"&gt;Edit&lt;\/a&gt;\n                &lt;\/div&gt;\n                &lt;div class=\"col-sm\"&gt;\n                    &lt;form action=\"{{ route('posts.destroy', $post-&gt;id) }}\" method=\"post\"&gt;\n                      @csrf\n                      @method('DELETE')\n                      &lt;button type=\"submit\" class=\"btn btn-danger btn-sm\"&gt;Delete&lt;\/button&gt;\n                    &lt;\/form&gt;\n                &lt;\/div&gt;\n              &lt;\/div&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n        &lt;\/div&gt;\n      @endforeach\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Der obige Code erstellt eine einfache HTML-Seite, die <a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bootstrap<\/a> f\u00fcr das Styling verwendet. Er richtet eine Navigationsleiste und eine Gittervorlage ein, die alle Beitr\u00e4ge in der Datenbank mit Details und zwei Aktionsschaltfl\u00e4chen &#8211; Bearbeiten und L\u00f6schen &#8211; auflistet, indem er den <code>@foreach<\/code> Blade-Helper verwendet.<\/p>\n<p>Die Schaltfl\u00e4che <strong>Bearbeiten<\/strong> bringt den Nutzer zur Seite <strong>Beitrag bearbeiten<\/strong>, wo er den Beitrag bearbeiten kann. Die Schaltfl\u00e4che <strong>L\u00f6schen<\/strong> l\u00f6scht den Beitrag aus der Datenbank mithilfe von <code>{{ route('posts.destroy', $post-&gt;id) }}<\/code> und der Methode <code>DELETE<\/code>.<\/p>\n<p><strong>Hinweis<\/strong>: Der Navbar-Code f\u00fcr alle Dateien ist derselbe wie in der vorherigen Datei.<\/p>\n<ol start=\"3\">\n<li>Erstelle die Seite <strong>create.blade.php<\/strong>. Die Blade-Datei namens <strong>create<\/strong> f\u00fcgt Beitr\u00e4ge zur Datenbank hinzu. Verwende den folgenden Befehl, um die Datei zu erstellen:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.create<\/code><\/pre>\n<p>Dies erzeugt eine Datei <strong>create.blade.php<\/strong> im Ordner<strong> \/resources\/views\/posts <\/strong>.<\/p>\n<ol start=\"4\">\n<li>F\u00fcge den folgenden Code in die Datei <strong>create.blade.php<\/strong> ein:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">\/\/ same as the previous file. Add the following after the nav tag and before the closing body tag.\n&lt;div class=\"container h-100 mt-5\"&gt;\n  &lt;div class=\"row h-100 justify-content-center align-items-center\"&gt;\n    &lt;div class=\"col-10 col-md-8 col-lg-6\"&gt;\n      &lt;h3&gt;Add a Post&lt;\/h3&gt;\n      &lt;form action=\"{{ route('posts.store') }}\" method=\"post\"&gt;\n        @csrf\n        &lt;div class=\"form-group\"&gt;\n          &lt;label for=\"title\"&gt;Title&lt;\/label&gt;\n          &lt;input type=\"text\" class=\"form-control\" id=\"title\" name=\"title\" required&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"form-group\"&gt;\n          &lt;label for=\"body\"&gt;Body&lt;\/label&gt;\n          &lt;textarea class=\"form-control\" id=\"body\" name=\"body\" rows=\"3\" required&gt;&lt;\/textarea&gt;\n        &lt;\/div&gt;\n        &lt;br&gt;\n        &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Create Post&lt;\/button&gt;\n      &lt;\/form&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Der obige Code erstellt ein Formular mit den Feldern <code>title<\/code> und <code>body<\/code> sowie einer Schaltfl\u00e4che <code>submit<\/code>, mit der du \u00fcber die Aktion <code>{{ route('posts.store') }}<\/code> mit der Methode <code>POST<\/code> einen Beitrag zur Datenbank hinzuf\u00fcgen kannst.<\/p>\n<ol start=\"5\">\n<li>Erstelle die Seite <strong>Beitrag bearbeiten<\/strong>, um Beitr\u00e4ge in der Datenbank zu bearbeiten. Verwende den folgenden Befehl, um die Datei zu erstellen:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.edit<\/code><\/pre>\n<p>Dadurch wird eine Datei <strong>edit.blade.php<\/strong> im Ordner <strong>\/resources\/views\/posts <\/strong>erstellt.<\/p>\n<ol start=\"6\">\n<li>F\u00fcge den folgenden Code in die Datei <strong>edit.blade.php<\/strong> ein:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;div class=\"container h-100 mt-5\"&gt;\n  &lt;div class=\"row h-100 justify-content-center align-items-center\"&gt;\n    &lt;div class=\"col-10 col-md-8 col-lg-6\"&gt;\n      &lt;h3&gt;Update Post&lt;\/h3&gt;\n      &lt;form action=\"{{ route('posts.update', $post-&gt;id) }}\" method=\"post\"&gt;\n        @csrf\n        @method('PUT')\n        &lt;div class=\"form-group\"&gt;\n          &lt;label for=\"title\"&gt;Title&lt;\/label&gt;\n          &lt;input type=\"text\" class=\"form-control\" id=\"title\" name=\"title\"\n            value=\"{{ $post-&gt;title }}\" required&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"form-group\"&gt;\n          &lt;label for=\"body\"&gt;Body&lt;\/label&gt;\n          &lt;textarea class=\"form-control\" id=\"body\" name=\"body\" rows=\"3\" required&gt;{{ $post-&gt;body }}&lt;\/textarea&gt;\n        &lt;\/div&gt;\n        &lt;button type=\"submit\" class=\"btn mt-3 btn-primary\"&gt;Update Post&lt;\/button&gt;\n      &lt;\/form&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Der obige Code erstellt ein Formular mit den Feldern <code>title<\/code> und <code>body<\/code> und einem Submit-Button zum Bearbeiten eines Beitrags mit dem angegebenen <code>id<\/code> in der Datenbank \u00fcber die Aktion <code>{{ route('posts.update') }}<\/code> mit einer Methode <code>PUT<\/code>.<\/p>\n<ol start=\"7\">\n<li>Starte dann deinen Anwendungsserver mit dem unten stehenden Code neu:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan serve<\/code><\/pre>\n<p>Besuche <code>http:\/\/127.0.0.1:8000<\/code> in deinem Browser, um deinen neuen Blog zu sehen. Klicke auf die Schaltfl\u00e4che <strong>Beitrag hinzuf\u00fcgen<\/strong>, um neue Beitr\u00e4ge hinzuzuf\u00fcgen.<\/p>\n<h2>Einsetzen und Testen deiner CRUD-Anwendung<\/h2>\n<p>Bereite deine Anwendung wie folgt f\u00fcr den Einsatz vor.<\/p>\n<ol start=\"1\">\n<li>Sorge f\u00fcr eine reibungslose und unkomplizierte Bereitstellung, indem du den \u00f6ffentlichen Ordner deklarierst. F\u00fcge im Stammverzeichnis des Anwendungsordners eine <strong>.htaccess-Datei<\/strong> mit dem folgenden Code hinzu:<\/li>\n<\/ol>\n<pre><code class=\"language-apacheconf\">&lt;IfModule mod_rewrite.c &gt;\n  RewriteEngine On\n  RewriteRule ^(.*)$ public\/$1 [L]\n&lt;\/IfModule &gt;<\/code><\/pre>\n<ol start=\"2\">\n<li>Zwinge deine Anwendung, <code>HTTPS<\/code> zu verwenden, indem du den folgenden Code \u00fcber deinen Routen in der Datei <strong>routes\/web.php<\/strong> einf\u00fcgst:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesURL;\nURL::forceScheme('https');<\/code><\/pre>\n<ol start=\"3\">\n<li>Pushe deinen Code in ein Git-Repository. Kinsta unterst\u00fctzt Bereitstellungen von GitHub, GitLab oder Bitbucket.<\/li>\n<\/ol>\n<h3>Ein Projekt auf MyKinsta einrichten<\/h3>\n<ol start=\"1\">\n<li>Erstelle ein <a href=\"https:\/\/kinsta.com\/de\/mykinsta\/\">MyKinsta-Konto<\/a>, wenn du noch keins hast.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Logge dich in dein Konto ein und klicke im Dashboard auf die Schaltfl\u00e4che <strong>Dienst hinzuf\u00fcgen<\/strong>, um eine neue Anwendung zu erstellen.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Wenn du neu in der Anwendung bist, verbinde dich mit deinem GitHub-, GitLab- oder Bitbucket-Konto und erteile bestimmte Berechtigungen.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>F\u00fclle das Formular aus und f\u00fcge die <code>APP_KEY<\/code> hinzu. Du findest den entsprechenden Wert in deiner <strong>.env-Datei<\/strong>.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li>W\u00e4hle deine Build-Ressourcen aus und entscheide, ob du den Build-Pfad deiner Anwendung verwenden oder deine Anwendung mit einer Dockerdatei bauen m\u00f6chtest. F\u00fcr diese Demonstration l\u00e4sst du MyKinsta die Anwendung auf der Grundlage deines Repositorys bauen.<\/li>\n<\/ol>\n<ol start=\"6\">\n<li>Gib die verschiedenen Prozesse an, die du w\u00e4hrend der Bereitstellung ausf\u00fchren m\u00f6chtest. Du kannst sie an dieser Stelle leer lassen.<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Zum Schluss f\u00fcgst du deine Zahlungsmethode hinzu.<\/li>\n<\/ol>\n<p>Nachdem du deine Zahlungsmethode best\u00e4tigt hast, stellt MyKinsta deine Anwendung bereit und weist dir eine URL zu (siehe unten):<\/p>\n<figure style=\"width: 492px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-crud-mykinsta-deployment-process.png\" alt=\"Erfolgreiche Bereitstellung mit MyKinsta\" width=\"492\" height=\"618\"><figcaption class=\"wp-caption-text\">Erfolgreiche Bereitstellung<\/figcaption><\/figure>\n<p>Du kannst den Link besuchen, aber du bekommst eine <code>500 | Server Error<\/code> Seite, weil die Anwendung eine g\u00fcltige Datenbankverbindung ben\u00f6tigt, um zu funktionieren. Der folgende Abschnitt behebt dieses Problem.<\/p>\n<h3>Erstelle eine Datenbank \u00fcber MyKinsta<\/h3>\n<ol start=\"1\">\n<li>Um eine Datenbank zu erstellen, gehe zu deinem MyKinsta-Dashboard und klicke auf <strong>Dienst hinzuf\u00fcgen<\/strong>.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>W\u00e4hle <strong>Datenbank<\/strong> und f\u00fclle das Formular mit dem gew\u00fcnschten Datenbanknamen, -typ, Benutzernamen und Passwort aus. F\u00fcge einen Standort f\u00fcr das Rechenzentrum und eine Datenbankgr\u00f6\u00dfe hinzu, die zu deiner Anwendung passt.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Auf der n\u00e4chsten Seite werden die Kosten\u00fcbersicht und deine Zahlungsmethode angezeigt. Klicke auf <strong>Datenbank erstellen<\/strong>, um den Vorgang abzuschlie\u00dfen.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Nachdem du die Datenbank erstellt hast, leitet dich MyKinsta zu deiner Dienstleistungsliste weiter. Klicke auf die Datenbank, die du gerade erstellt hast, und scrolle nach unten zu <strong>Externe Verbindungen<\/strong>. Kopiere die Anmeldedaten der Datenbank.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li>Gehe zur\u00fcck zur <strong>Verteilungsseite<\/strong> der Anwendung und klicke auf <strong>Einstellungen<\/strong>. Scrolle dann nach unten zu <strong>Umgebungsvariablen<\/strong> und klicke auf <strong>Umgebungsvariablen hinzuf\u00fcgen<\/strong>. F\u00fcge die Datenbankanmeldeinformationen in der folgenden Reihenfolge als Umgebungsvariablen hinzu:<\/li>\n<\/ol>\n<pre><code class=\"language-env\">DB_CONNECTION=mysql\nDB_HOST=External hostname\nDB_PORT=External port\nDB_DATABASE=Database name\nDB_USERNAME=Username\nDB_PASSWORD=Password<\/code><\/pre>\n<p>Die Liste der Umgebungsvariablen der Anwendung sollte jetzt wie folgt aussehen:<\/p>\n<figure style=\"width: 561px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/07\/laravel-crud-env-variables-kinsta.png\" alt=\"Die .env-Variablenliste\" width=\"561\" height=\"629\"><figcaption class=\"wp-caption-text\">Die .env-Variablenliste<\/figcaption><\/figure>\n<ol start=\"6\">\n<li>Gehe auf die Seite <strong>Bereitstellungen<\/strong>\u00a0deiner Anwendung und setze deine Anwendung manuell ein, indem du auf <strong>Jetzt einsetzen <\/strong>klickst, um die \u00c4nderungen zu \u00fcbernehmen. Bis jetzt hast du eine Datenbank erstellt und sie mit deiner Anwendung verbunden.<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Um nun die Datenbanktabellen in deiner MyKinsta-Datenbank zu erstellen, verbindest du die Datenbank mit deiner lokalen Anwendung, indem du deine <strong>.env-Datei<\/strong> mit denselben Anmeldedaten aktualisierst, die du in deiner Anwendung bei MyKinsta eingegeben hast, und den folgenden Befehl ausf\u00fchrst:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan migrate<\/code><\/pre>\n<p>Dieser Befehl f\u00fchrt alle Migrationsdateien aus. Er erstellt alle definierten Tabellen in deiner MyKinsta-Anwendung.<\/p>\n<p>Jetzt kannst du deine Anwendung mit der URL testen, die dir nach der ersten Bereitstellung zugewiesen wurde.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Laravel ist ein umfassendes Framework f\u00fcr die Erstellung robuster und skalierbarer Webanwendungen, die CRUD-Funktionen erfordern. Mit seiner intuitiven Syntax und seinen leistungsstarken Funktionen macht es Laravel einfach, CRUD-Operationen in deine Anwendung einzubauen.<\/p>\n<p>In diesem Artikel wurden die grundlegenden Konzepte von CRUD-Operationen behandelt und wie man sie mit den eingebauten Funktionen von Laravel implementiert. Au\u00dferdem wird erkl\u00e4rt:<\/p>\n<ul>\n<li>Wie du eine Datenbank in MyKinsta erstellst und sie mit deiner Anwendung verbindest<\/li>\n<li>Wie du die Migrationen von Laravel nutzt, um die Datenbanktabelle zu definieren und die Controller-Datei und ihre Funktionen zu erstellen<\/li>\n<li>Definiere ein Modell und verbinde es mit dem Controller. Laravels Routing generiert Blade-Dateien, um entsprechende Seiten und Formulare zu erstellen und die Anwendung mit MyKinsta einzusetzen und zu testen<\/li>\n<\/ul>\n<p>Nachdem du nun gesehen hast, wie einfach es ist, CRUD-Operationen in Laravel durchzuf\u00fchren, <a href=\"https:\/\/my.kinsta.com\/login?lang=de\">solltest du dir MyKinsta<\/a> f\u00fcr die Entwicklung und das <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Hosting<\/a> von Webanwendungen ansehen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel ist ein beliebtes PHP-Framework f\u00fcr die Entwicklung moderner und dynamischer Webanwendungen in der heutigen schnelllebigen und sich st\u00e4ndig weiterentwickelnden Webentwicklungslandschaft. Eine seiner Kernfunktionen ist Laravel &#8230;<\/p>\n","protected":false},"author":290,"featured_media":64989,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[958],"class_list":["post-64988","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wie man CRUD (Erstellen, Lesen, Aktualisieren, L\u00f6schen) mit Laravel durchf\u00fchrt<\/title>\n<meta name=\"description\" content=\"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt\" \/>\n<meta property=\"og:description\" content=\"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-30T11:48:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-02-07T09:29:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"6084\" \/>\n\t<meta property=\"og:image:height\" content=\"3042\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marcia Ramos\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt\",\"datePublished\":\"2024-01-30T11:48:29+00:00\",\"dateModified\":\"2024-02-07T09:29:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\"},\"wordCount\":2266,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\",\"name\":\"Wie man CRUD (Erstellen, Lesen, Aktualisieren, L\u00f6schen) mit Laravel durchf\u00fchrt\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg\",\"datePublished\":\"2024-01-30T11:48:29+00:00\",\"dateModified\":\"2024-02-07T09:29:08+00:00\",\"description\":\"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g\",\"caption\":\"Marcia Ramos\"},\"description\":\"I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 10 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/marciadiasramos\/\"],\"honorificSuffix\":\"B.Sc.\",\"gender\":\"Female\",\"knowsLanguage\":[\"English\",\"Portuguese\"],\"jobTitle\":\"Editorial Team Lead\",\"worksFor\":\"Kinsta Inc.\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wie man CRUD (Erstellen, Lesen, Aktualisieren, L\u00f6schen) mit Laravel durchf\u00fchrt","description":"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/","og_locale":"de_DE","og_type":"article","og_title":"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt","og_description":"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.","og_url":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2024-01-30T11:48:29+00:00","article_modified_time":"2024-02-07T09:29:08+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Marcia Ramos","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt","datePublished":"2024-01-30T11:48:29+00:00","dateModified":"2024-02-07T09:29:08+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/"},"wordCount":2266,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/","url":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/","name":"Wie man CRUD (Erstellen, Lesen, Aktualisieren, L\u00f6schen) mit Laravel durchf\u00fchrt","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg","datePublished":"2024-01-30T11:48:29+00:00","dateModified":"2024-02-07T09:29:08+00:00","description":"CRUD-Operationen sind das R\u00fcckgrat einer jeden datenbankgest\u00fctzten Anwendung. Lerne, wie man mit Laravel CRUD (Create, Read, Update, Delete) durchf\u00fchrt.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/laravel-crud\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/08\/laravel-crud-2.jpg","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/laravel-crud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/de\/thema\/laravel\/"},{"@type":"ListItem","position":3,"name":"Wie man mit Laravel CRUD (Create, Read, Update und Delete) durchf\u00fchrt"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0d680db24858fdf61a7e7ce3c1a160f5?s=96&d=mm&r=g","caption":"Marcia Ramos"},"description":"I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 10 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.","sameAs":["https:\/\/www.linkedin.com\/in\/marciadiasramos\/"],"honorificSuffix":"B.Sc.","gender":"Female","knowsLanguage":["English","Portuguese"],"jobTitle":"Editorial Team Lead","worksFor":"Kinsta Inc.","url":"https:\/\/kinsta.com\/de\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=64988"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64988\/revisions"}],"predecessor-version":[{"id":68769,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/64988\/revisions\/68769"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/64988\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/64989"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=64988"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=64988"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=64988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}