{"id":55035,"date":"2023-09-17T11:04:22","date_gmt":"2023-09-17T09:04:22","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=55035&#038;preview=true&#038;preview_id=55035"},"modified":"2023-09-25T20:00:52","modified_gmt":"2023-09-25T18:00:52","slug":"laravel-crud","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/","title":{"rendered":"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel"},"content":{"rendered":"<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> is een populair <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-laravel\/\">PHP framework<\/a> voor het bouwen van moderne en dynamische webapplicaties in het snelle en steeds veranderende landschap van webdevelopment van vandaag de dag. Een van de belangrijkste features is <a href=\"https:\/\/laravel.com\/docs\/10.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Eloquent<\/a>, een <a href=\"https:\/\/en.wikipedia.org\/wiki\/Object%E2%80%93relational_mapping\" target=\"_blank\" rel=\"noopener noreferrer\">object-relatioal mapper<\/a> (ORM) waarmee developers effici\u00ebnt CRUD bewerkingen (create, read, update en delete) op een database kunnen uitvoeren.<\/p>\n<p>Deze tutorial laat zien hoe je deze bewerkingen kunt uitvoeren in je Laravel applicatie met behulp van Laravel&#8217;s Eloquent ORM en hoe je je Laravel CRUD applicatie kunt implementeren met behulp van <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta<\/a>.<\/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 functionaliteit in Laravel<\/h2>\n<p>CRUD bewerkingen vormen de ruggengraat van elke database-gedreven applicatie. Hiermee kun je de meest elementaire en essenti\u00eble databasebewerkingen uitvoeren, zoals het maken van nieuwe records, het lezen van bestaande records en het bijwerken en verwijderen ervan. Deze bewerkingen zijn cruciaal voor de functionaliteit van elke <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#laravel\">Laravel applicatie<\/a> die met een database werkt.<\/p>\n<p>Eloquent biedt een eenvoudige en intu\u00eftieve manier van interactie met de database door de complexiteit van databasebeheer te verminderen, zodat je je kunt richten op het bouwen van je applicatie. Met de ingebouwde methoden en klassen kun je eenvoudig CRUD records in de database uitvoeren.<\/p>\n<h3>Vereisten<\/h3>\n<p>Om deze tutorial te kunnen volgen, moet je over het volgende beschikken:<\/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=nl\">Een MyKinsta account<\/a><\/li>\n<li>Een account op <a href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, <a href=\"https:\/\/gitlab.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab<\/a> of <a href=\"https:\/\/bitbucket.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket<\/a> om je code te pushen<\/li>\n<li><a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bootstrap versie 5<\/a><\/li>\n<\/ul>\n<h3>Stappen<\/h3>\n<ol start=\"1\">\n<li>Laravel installeren en een nieuwe applicatie maken<\/li>\n<li>Een database maken<\/li>\n<li>Een tabel maken<\/li>\n<li>Een controller maken<\/li>\n<li>Het model instellen<\/li>\n<li>Een route toevoegen<\/li>\n<li>Blade bestanden genereren<\/li>\n<li>Je CRUD applicatie deployen en testen<\/li>\n<\/ol>\n<p>Bekijk de <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\" target=\"_blank\" rel=\"noopener noreferrer\">volledige code<\/a> van de tutorial voor hulp tijdens het coderen.<\/p>\n<h2>Laravel installeren en een nieuwe applicatie maken<\/h2>\n<p>Open je terminal waar je je Laravel applicatie wilt maken en volg de onderstaande stappen.<\/p>\n<ol start=\"1\">\n<li>Voer dit uit om Laravel te installeren:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">composer global require laravel\/installer<\/code><\/pre>\n<ol start=\"2\">\n<li>Om een nieuwe Laravel applicatie te maken, voer je uit:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">laravel new crudposts<\/code><\/pre>\n<h2>Database maken<\/h2>\n<p>Om een nieuwe database aan te maken voor je applicatie:<\/p>\n<ol start=\"1\">\n<li>Start de Apache en MySQL servers in het XAMPP controlepaneel en ga naar <code>http:\/\/localhost\/phpmyadmin<\/code> in je browser.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Klik op <b>New <\/b>in de linker zijbalk. Je zou het volgende moeten zien:<\/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=\"Het formulier Database maken.\" width=\"1134\" height=\"315\"><figcaption class=\"wp-caption-text\">Het formulier Create database<\/figcaption><\/figure>\n<ol start=\"3\">\n<li>Voeg een databasenaam toe en klik op <strong>Create<\/strong>.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Bewerk het <strong>.env<\/strong> bestand van je applicatie in de root van je Laravel applicatie. Het bevat alle omgevingsvariabelen die door de applicatie worden gebruikt. Zoek de variabelen met het voorvoegsel <code>DB_<\/code> en bewerk ze met je databasegegevens:<\/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>Een tabel maken<\/h2>\n<p>De rijen gegevens in je applicatie worden opgeslagen in tabellen. Je hebt maar \u00e9\u00e9n tabel nodig voor deze applicatie, die is gemaakt met <a href=\"https:\/\/laravel.com\/docs\/10.x\/migrations\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel migrations<\/a>.<\/p>\n<ol start=\"1\">\n<li>Voer Artisan, de opdrachtregelinterface van Laravel, uit om een tabel te maken en een migratiebestand te genereren:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:migration create_posts_table<\/code><\/pre>\n<p>Het bovenstaande commando maakt een nieuw bestand,<\/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>Open <strong>yyyy_mm_dd_hhmmss_create_posts_table.php<\/strong> om de kolommen te defini\u00ebren die je in je database tabel wilt hebben in de up functie:<\/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>Deze code definieert wat de posts tabel bevat. Het heeft vier kolommen: <code>id<\/code>, <code>title<\/code>, <code>body<\/code>, en <code>timestamps<\/code>.<\/p>\n<ol start=\"3\">\n<li>Voer de migratiebestanden in de map <strong>database\/migrations<\/strong>\u00a0uit om tabellen aan te maken in de database:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan migrate<\/code><\/pre>\n<p>De uitvoer ziet er als volgt uit:<\/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=\"Het uitvoeren van de migraties.\" width=\"614\" height=\"403\"><figcaption class=\"wp-caption-text\">Het uitvoeren van de migraties.<\/figcaption><\/figure>\n<ol start=\"4\">\n<li>Ga naar de database die je eerder hebt gemaakt om te bevestigen dat je de tabellen hebt gemaakt:<\/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=\"Aangemaakte tabellen.\" width=\"1053\" height=\"209\"><figcaption class=\"wp-caption-text\">Aangemaakte tabellen.<\/figcaption><\/figure>\n<h2>Een controller maken<\/h2>\n<p>De controller bevat alle functies om posts uit de database te CRUD-en.<\/p>\n<p>Genereer een controllerbestand in je Laravel applicatie met Artisan:<\/p>\n<pre><code class=\"language-sh\">php artisan make:controller PostController --api<\/code><\/pre>\n<p>Door deze opdracht uit te voeren maak je een<strong> PostController.php<\/strong> bestand in <strong>app\/Http\/Controllers<\/strong>, met boilerplate code en de lege functiedeclaraties <code>index<\/code>, <code>store<\/code>, <code>show<\/code>, <code>update<\/code>, en <code>destroy<\/code>.<\/p>\n<h2>Functies maken<\/h2>\n<p>Maak vervolgens de functies die de gegevens opslaan, indexeren, bijwerken, vernietigen, aanmaken, tonen en bewerken.<\/p>\n<p>Je kunt ze toevoegen aan het bestand <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> zoals hieronder getoond.<\/p>\n<h3>De functie <code>store<\/code><\/h3>\n<p>De functie <code>store<\/code> voegt een post toe aan de database.<\/p>\n<p>Blader naar de functie <code>store<\/code> en voeg de volgende code toe binnen de lege accolades:<\/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>Deze code neemt een object dat de titel en de inhoud van de post bevat, valideert de gegevens, voegt een nieuwe post toe aan de database als de gegevens geldig zijn en stuurt de gebruiker door naar de homepage met een succesbericht.<\/p>\n<h3>De functie <code>index<\/code><\/h3>\n<p>De functie <code>index<\/code> haalt alle posts op uit de database en stuurt de gegevens naar de <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> pagina.<\/p>\n<h3>De functie <code>update<\/code><\/h3>\n<p>De functie &lt;<code>update<\/code> bevat de <code>id<\/code> van de bij te werken post, de nieuwe post <code>title<\/code> en de <code>body<\/code>. Na het valideren van de gegevens wordt de post met dezelfde <code>id<\/code> gevonden. Als die gevonden is, werkt de functie <code>update<\/code> de post in de database bij met de nieuwe <code>title<\/code> en <code>body<\/code>. Daarna wordt de gebruiker doorgestuurd naar de homepage met een succesmelding.<\/p>\n<h3>De functie <code>destroy<\/code><\/h3>\n<p>De functie <code>destroy<\/code> vindt een post met het gegeven <code>id<\/code> en verwijdert het uit de database, waarna de gebruiker naar de homepage wordt doorgestuurd met een succesmelding.<\/p>\n<p>De bovenstaande functies zijn de functies die worden gebruikt om posts uit de database te CRUD-en. Je moet echter meer functies defini\u00ebren in de controller om de benodigde pagina&#8217;s te renderen in <strong>resources\/views\/posts\/<\/strong>.<\/p>\n<h3>De functie <code>create<\/code><\/h3>\n<p>De functie <code>create<\/code> rendert de <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> pagina, die het formulier bevat voor het toevoegen van posts aan de database.<\/p>\n<h3>De functie <code>show<\/code><\/h3>\n<p>De <code>show<\/code> functie vindt een post met het gegeven <code>id<\/code> in de database en rendert de <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> bestand met de post.<\/p>\n<h3>De functie <code>edit<\/code><\/h3>\n<p>De <code>edit<\/code> functie vindt een post met het gegeven <code>id<\/code> in de database en rendert het <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> bestand met de details van de post in een formulier.<\/p>\n<h2>Het model instellen<\/h2>\n<p>Het <code>Post<\/code> model werkt samen met de <strong>posts<\/strong> tabel in de database.<\/p>\n<ol start=\"1\">\n<li>Om een model te maken met Artisan, voer je uit:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:model Post<\/code><\/pre>\n<p>Deze code maakt een <strong>Post.php<\/strong> bestand in de <strong>App\/Models<\/strong> map.<\/p>\n<ol start=\"2\">\n<li>Maak een <code>&lt;fillable<\/code> array. Voeg de volgende code toe binnen de klasse <code>Post<\/code> en onder de regel <code>use HasFactory;<\/code><\/li>\n<\/ol>\n<pre><code class=\"language-php\">protected $fillable = [\n  'title',\n  'body',\n];<\/code><\/pre>\n<p>Deze code maakt een <code>fillable<\/code> array waarmee je items aan de database kunt toevoegen vanuit je Laravel applicatie.<\/p>\n<ol start=\"3\">\n<li>Verbind het <code>Post<\/code> model met het <strong>PostController.php<\/strong> bestand. Open <strong>PostController.php<\/strong> en voeg onderstaande regel toe onder <code>use IlluminateHttpRequest;<\/code>. Het ziet er als volgt uit:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse AppModelsPost;<\/code><\/pre>\n<p>Het bestand <strong>PostController.php<\/strong> zou er nu zo uit moeten zien:<\/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 toevoegen<\/h2>\n<p>Nadat je de controllerfuncties en het <code>Post<\/code> model hebt gemaakt, moet je routes toevoegen voor je controllerfuncties.<\/p>\n<ol start=\"1\">\n<li>Open <strong>routes\/web.php<\/strong> en verwijder de boilerplate route die de applicatie heeft gegenereerd. Vervang deze door de onderstaande code om de controllerfuncties te verbinden met hun respectievelijke routes:<\/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>Om de routes te verbinden, open je <strong>app\/Http\/Controllers\/PostController.php<\/strong> en voeg je onderstaande regel toe onder de regel <code>use IlluminateSupportFacadesRoute;<\/code>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesRoute;\nuse AppHttpControllersPostController;<\/code><\/pre>\n<p>Het bestand <strong>routes\/web.php<\/strong> zou er nu zo uit moeten zien:<\/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 bestanden genereren<\/h2>\n<p>Nu je de routes hebt, kun je de <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-blade\/\">Laravel Blade<\/a> bestanden maken. Voordat je Artisan gebruikt om de Blade bestanden te genereren, moet je het commando <code>make:view<\/code> maken, waarmee je <strong>blade.php<\/strong> bestanden kunt genereren.<\/p>\n<ol start=\"1\">\n<li>Voer de volgende code uit in de CLI om een <strong>MakeViewCommand<\/strong> opdrachtbestand te maken in de <strong>app\/Console\/Commands <\/strong>map:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:command MakeViewCommand<\/code><\/pre>\n<ol start=\"2\">\n<li>Maak een commando voor het genereren van <strong>.blade.php<\/strong> bestanden vanuit de CLI door de code in het <strong>MakeViewCommand<\/strong> bestand te vervangen door het volgende:<\/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>Homepage maken<\/h3>\n<p>Maak vervolgens je startpagina. De homepage is het bestand <strong>index.blade.php<\/strong>, waarin alle posts staan.<\/p>\n<ol start=\"1\">\n<li>Om de homepage te maken, voer je uit:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.index<\/code><\/pre>\n<p>Dit maakt een map <strong>posts<\/strong> in de map <strong>\/resources\/views<\/strong> en een bestand <strong>index.blade.php<\/strong> eronder. Het resulterende pad is <strong>\/resources\/views\/posts\/index.blade.php<\/strong>.<\/p>\n<ol start=\"2\">\n<li>Voeg de volgende code toe aan het bestand <strong>index.blade.php<\/strong>:<\/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>De bovenstaande code maakt een eenvoudige HTML pagina die <a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bootstrap<\/a> gebruikt voor styling. Het maakt een navigatiebalk en een rastertemplate dat alle posts in de database weergeeft met details en twee actieknoppen &#8211; edit en delete &#8211; met behulp van de <code>@foreach<\/code> Blade helper.<\/p>\n<p>De knop <b>Edit <\/b>brengt de gebruiker naar de pagina <strong>Edit post<\/strong>, waar hij de post kan bewerken. De knop <b>Delete <\/b>verwijdert de post uit de database met behulp van <code>{{ route('posts.destroy', $post-&gt;id) }}<\/code> met een methode <code>DELETE<\/code>.<\/p>\n<p><strong>Opmerking<\/strong>: De navbarcode voor alle bestanden is hetzelfde als in het vorige bestand.<\/p>\n<ol start=\"3\">\n<li>Maak de pagina <strong>create.blade.php<\/strong>. Het Blade bestand genaamd <strong>create<\/strong> voegt posts toe aan de database. Gebruik het volgende commando om het bestand te genereren:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.create<\/code><\/pre>\n<p>Dit genereert een bestand <strong>create.blade.php<\/strong> in de map<strong> \/resources\/views\/posts <\/strong>.<\/p>\n<ol start=\"4\">\n<li>Voeg de volgende code toe aan het bestand <strong>create.blade.php<\/strong>:<\/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>Bovenstaande code maakt een formulier met <code>title<\/code> en <code>body<\/code> velden en een <code>submit<\/code> knop voor het toevoegen van een post aan de database via de <code>{{ route('posts.store') }}<\/code> actie met een <code>POST<\/code> methode.<\/p>\n<ol start=\"5\">\n<li>Maak de pagina <strong>Edit post <\/strong>om posts in de database te bewerken. Gebruik het volgende commando om het bestand te genereren:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.edit<\/code><\/pre>\n<p>Dit maakt een <strong>edit.blade.php<\/strong> bestand in de map <strong>\/resources\/views\/posts <\/strong>.<\/p>\n<ol start=\"6\">\n<li>Voeg de volgende code toe aan het <strong>edit.blade.php<\/strong> bestand:<\/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>Bovenstaande code maakt een formulier met <code>title<\/code> en <code>body<\/code> velden en een verzendknop voor het bewerken van een post met de opgegeven <code>id<\/code> in de database via de <code>{{ route('posts.update') }}<\/code> actie met een <code>PUT<\/code> methode.<\/p>\n<ol start=\"7\">\n<li>Start vervolgens je applicatieserver opnieuw op met de onderstaande code:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan serve<\/code><\/pre>\n<p>Ga naar <code>http:\/\/127.0.0.1:8000<\/code> in je browser om je nieuwe blog te bekijken. Klik op de knop <strong>Post toevoegen<\/strong> om nieuwe posts toe te voegen.<\/p>\n<h2>Je CRUD applicatie deployen en testen<\/h2>\n<p>Bereid je applicatie als volgt voor op de deployment.<\/p>\n<ol start=\"1\">\n<li>Maak de deployment soepel en eenvoudig door de public map te declaren. Voeg een <strong>.htaccess<\/strong> bestand toe aan de root van de applicatiemap met de volgende code:<\/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>Forceer je app om <code>HTTPS<\/code> te gebruiken door de volgende code toe te voegen boven je routes in het bestand <strong>routes\/web.php<\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesURL;\nURL::forceScheme('https');<\/code><\/pre>\n<ol start=\"3\">\n<li>Zet je code op een Git repository. Kinsta ondersteunt deployments vanaf GitHub, GitLab of Bitbucket.<\/li>\n<\/ol>\n<h3>Een project instellen op MyKinsta<\/h3>\n<ol start=\"1\">\n<li>Maak een <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta<\/a> account aan als je er nog geen hebt.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Log in op je account en klik op de knop <strong>Dienst toevoegen<\/strong> op het dashboard om een nieuwe applicatie te maken.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Als de app nieuw voor je is, maak dan verbinding met je GitHub, GitLab of Bitbucket account en geef specifieke rechten.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Vul het formulier in en voeg de <code>APP_KEY<\/code> toe. Je kunt de bijbehorende waarde vinden in je <strong>.env<\/strong> bestand.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li>Selecteer je build resources en of je het build pad van je applicatie wilt gebruiken of je applicatie wilt bouwen met Dockerfile. Voor deze demonstratie laat je MyKinsta de app bouwen op basis van je repository.<\/li>\n<\/ol>\n<ol start=\"6\">\n<li>Geef de verschillende processen op die je wilt uitvoeren tijdens de deployment. Je kunt het op dit punt leeg laten.<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Voeg tot slot je betaalmethode toe.<\/li>\n<\/ol>\n<p>Na het bevestigen van je betaalmethode, deployt MyKinsta je applicatie en wijst je een URL toe zoals hieronder getoond:<\/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=\"Succesvolle deployment met MyKinsta\" width=\"492\" height=\"618\"><figcaption class=\"wp-caption-text\">Succesvolle deployment.<\/figcaption><\/figure>\n<p>Je kunt de link bezoeken, maar je krijgt een <code>500 | Server Error<\/code> pagina omdat de app een geldige databaseverbinding nodig heeft om te werken. De volgende sectie lost dit probleem op.<\/p>\n<h3>Een database maken via MyKinsta<\/h3>\n<ol start=\"1\">\n<li>Om een database aan te maken, ga je naar je MyKinsta dashboard en klik je op <strong>Dienst toevoegen<\/strong>.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Selecteer <strong>Database<\/strong> en vul het formulier in met je gewenste databasenaam, -type, gebruikersnaam en wachtwoord. Voeg een locatie voor een datacenter toe en een databasegrootte die past bij je toepassing.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Op de volgende pagina zie je het kostenoverzicht en je betaalmethode. Klik op <strong>Database aanmaken<\/strong> om het proces te voltooien.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Nadat je de database hebt gemaakt, verwijst MyKinsta je door naar je lijst met diensten. Klik op de database die je zojuist hebt gemaakt en scroll naar beneden naar <strong>Externe verbindingen<\/strong>. Kopieer de databasegegevens.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li>Ga terug naar de <strong>Deployment<\/strong> pagina van de applicatie en klik op <strong>Instellingen<\/strong>. Scroll vervolgens naar beneden naar <strong>Omgevingsvariabelen<\/strong> en klik op <strong>Omgevingsvariabelen toevoegen<\/strong>. Voeg de databasegegevens toe als omgevingsvariabelen in de volgende volgorde:<\/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>De lijst met omgevingsvariabelen voor de applicatie zou er nu zo uit moeten zien:<\/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=\"De .env variabelenlijst.\" width=\"561\" height=\"629\"><figcaption class=\"wp-caption-text\">De .env variabelenlijst.<\/figcaption><\/figure>\n<ol start=\"6\">\n<li>Ga naar de <strong>Deployments<\/strong> pagina van je applicatie en deploy je applicatie handmatig door op <strong>Deploy nu <\/strong>te klikken om deze wijzigingen toe te passen. Tot nu toe heb je een database gemaakt en verbonden met je applicatie.<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Ten slotte, om de databasetabellen in je MyKinsta database te maken, verbind je de database met je lokale app door je <strong>.env <\/strong>bestand bij te werken met dezelfde referenties die je hebt ingevoerd in je app op MyKinsta en voer je het volgende commando uit:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan migrate<\/code><\/pre>\n<p>Dit commando voert alle migratiebestanden uit. Het cre\u00ebert alle gedefinieerde tabellen in je MyKinsta applicatie.<\/p>\n<p>Nu kun je je applicatie testen met de URL die is toegewezen na de eerste deployment.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Laravel is een uitgebreid framework voor het maken van robuuste en schaalbare webapplicaties die CRUD functionaliteit vereisen. Met zijn intu\u00eftieve syntaxis en krachtige functies maakt Laravel het eenvoudig om CRUD bewerkingen in je applicatie in te bouwen.<\/p>\n<p>Dit artikel behandelt de fundamentele concepten van CRUD-bewerkingen en hoe je ze kunt deployen met behulp van de ingebouwde functies van Laravel. Het legt ook uit:<\/p>\n<ul>\n<li>Hoe je een database aanmaakt in MyKinsta en deze verbindt met je applicatie<\/li>\n<li>Hoe je Laravel&#8217;s migraties gebruikt om de databasetabel te defini\u00ebren, het controllerbestand en zijn functies te maken<\/li>\n<li>Een model defini\u00ebren en koppelen aan de controller. De routing van Laravel genereert Blade bestanden om bijbehorende pagina&#8217;s en formulieren te maken en om de applicatie uit te rollen en te testen met MyKinsta<\/li>\n<\/ul>\n<p>Nu je hebt gezien hoe eenvoudig het is om CRUD bewerkingen uit te voeren in Laravel, kun je <a href=\"https:\/\/my.kinsta.com\/login?lang=nl\">MyKinsta<\/a> bekijken voor de ontwikkeling en <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hosting<\/a> van webapplicaties.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel is een populair PHP framework voor het bouwen van moderne en dynamische webapplicaties in het snelle en steeds veranderende landschap van webdevelopment van vandaag de &#8230;<\/p>\n","protected":false},"author":290,"featured_media":55036,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[866],"class_list":["post-55035","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>Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel<\/title>\n<meta name=\"description\" content=\"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.\" \/>\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\/nl\/blog\/laravel-crud\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel\" \/>\n<meta property=\"og:description\" content=\"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-17T09:04:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-25T18:00:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.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 bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel\",\"datePublished\":\"2023-09-17T09:04:22+00:00\",\"dateModified\":\"2023-09-25T18:00:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/\"},\"wordCount\":2264,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/\",\"name\":\"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg\",\"datePublished\":\"2023-09-17T09:04:22+00:00\",\"dateModified\":\"2023-09-25T18:00:52+00:00\",\"description\":\"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel","description":"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.","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\/nl\/blog\/laravel-crud\/","og_locale":"nl_NL","og_type":"article","og_title":"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel","og_description":"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-09-17T09:04:22+00:00","article_modified_time":"2023-09-25T18:00:52+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Marcia Ramos","Geschatte leestijd":"15 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel","datePublished":"2023-09-17T09:04:22+00:00","dateModified":"2023-09-25T18:00:52+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/"},"wordCount":2264,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/","name":"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg","datePublished":"2023-09-17T09:04:22+00:00","dateModified":"2023-09-25T18:00:52+00:00","description":"CRUD bewerkingen vormen de ruggengraat van elke database-gestuurde applicatie. Leer hoe je CRUD (Create, Read, Update en Delete) kunt uitvoeren met Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/08\/laravel-crud.jpg","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-crud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Zo voer je CRUD (Create, Read, Update en Delete) bewerkingen uit met Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=55035"}],"version-history":[{"count":9,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55035\/revisions"}],"predecessor-version":[{"id":55769,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/55035\/revisions\/55769"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/55035\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/55036"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=55035"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=55035"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=55035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}