{"id":71922,"date":"2023-08-17T09:59:25","date_gmt":"2023-08-17T08:59:25","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=71922&#038;preview=true&#038;preview_id=71922"},"modified":"2024-09-17T14:51:23","modified_gmt":"2024-09-17T13:51:23","slug":"crud-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/","title":{"rendered":"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel"},"content":{"rendered":"<p><a href=\"https:\/\/laravel.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel<\/a> est un <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-laravel\/\">framework PHP<\/a> populaire qui permet de cr\u00e9er des applications web modernes et dynamiques dans le paysage actuel du d\u00e9veloppement web, en constante \u00e9volution. L&rsquo;une de ses principales fonctionnalit\u00e9s est <a href=\"https:\/\/laravel.com\/docs\/10.x\/eloquent\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Eloquent<\/a>, un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Object%E2%80%93relational_mapping\" target=\"_blank\" rel=\"noopener noreferrer\">mappeur objet-relationnel<\/a> (ORM) qui permet aux d\u00e9veloppeurs d&rsquo;effectuer efficacement des op\u00e9rations de cr\u00e9ation, de lecture, de mise \u00e0 jour et de suppression (Create, Read, Update, Delete ou CRUD) sur une base de donn\u00e9es.<\/p>\n<p>Ce tutoriel montre comment effectuer ces op\u00e9rations dans votre application Laravel en utilisant l&rsquo;ORM Eloquent de Laravel et comment d\u00e9ployer votre application CRUD Laravel en utilisant <a href=\"https:\/\/kinsta.com\/fr\/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>Fonctionnalit\u00e9 CRUD dans Laravel<\/h2>\n<p>Les op\u00e9rations CRUD sont l&rsquo;\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Elles vous permettent d&rsquo;effectuer les op\u00e9rations les plus \u00e9l\u00e9mentaires et les plus essentielles de la base de donn\u00e9es, telles que la cr\u00e9ation de nouveaux enregistrements, la lecture des enregistrements existants, leur mise \u00e0 jour et leur suppression. Ces op\u00e9rations sont cruciales pour la fonctionnalit\u00e9 de toute <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#laravel\">application Laravel<\/a> qui interagit avec une base de donn\u00e9es.<\/p>\n<p>Eloquent fournit un moyen simple et intuitif d&rsquo;interagir avec la base de donn\u00e9es en r\u00e9duisant la complexit\u00e9 de la gestion de la base de donn\u00e9es afin que vous puissiez vous concentrer sur la construction de votre application. Ses m\u00e9thodes et classes int\u00e9gr\u00e9es vous permettent d&rsquo;acc\u00e9der facilement aux enregistrements de la base de donn\u00e9es.<\/p>\n<h3>Pr\u00e9-requis<\/h3>\n<p>Pour suivre ce tutoriel, assurez-vous d&rsquo;avoir les \u00e9l\u00e9ments suivants :<\/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=fr\">Un compte MyKinsta<\/a><\/li>\n<li>Un compte sur <a href=\"https:\/\/github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub<\/a>, <a href=\"https:\/\/gitlab.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitLab<\/a>, ou <a href=\"https:\/\/bitbucket.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bitbucket<\/a> pour pousser votre code<\/li>\n<li><a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bootstrap version 5<\/a><\/li>\n<\/ul>\n<h3>\u00c9tapes<\/h3>\n<ol start=\"1\">\n<li>Installez Laravel et cr\u00e9ez une nouvelle application<\/li>\n<li>Cr\u00e9ez une base de donn\u00e9es<\/li>\n<li>Cr\u00e9ez une table<\/li>\n<li>Cr\u00e9ez un contr\u00f4leur<\/li>\n<li>Configurez le mod\u00e8le<\/li>\n<li>Ajouter une route<\/li>\n<li>G\u00e9n\u00e9rer des fichiers Blade<\/li>\n<li>D\u00e9ployez et testez votre application CRUD<\/li>\n<\/ol>\n<p>Pour vous guider tout au long du processus, consultez le <a href=\"https:\/\/github.com\/VirtuaCreative\/kinsta-laravel-crud\" target=\"_blank\" rel=\"noopener noreferrer\">code complet<\/a> du tutoriel.<\/p>\n<h2>Installer Laravel et cr\u00e9er une nouvelle application<\/h2>\n<p>Ouvrez le terminal dans lequel vous souhaitez cr\u00e9er votre application Laravel et suivez les \u00e9tapes ci-dessous.<\/p>\n<ol start=\"1\">\n<li>Pour installer Laravel, ex\u00e9cutez :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">composer global require laravel\/installer<\/code><\/pre>\n<ol start=\"2\">\n<li>Pour cr\u00e9er une nouvelle application Laravel, ex\u00e9cutez :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">laravel new crudposts<\/code><\/pre>\n<h2>Cr\u00e9er une base de donn\u00e9es<\/h2>\n<p>Pour cr\u00e9er une nouvelle base de donn\u00e9es pour votre application :<\/p>\n<ol start=\"1\">\n<li>D\u00e9marrez les serveurs Apache et MySQL dans le panneau de contr\u00f4le XAMPP et visitez <code>http:\/\/localhost\/phpmyadmin<\/code> dans votre navigateur.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Cliquez sur <strong>Nouveau<\/strong> dans la colonne lat\u00e9rale de gauche. Vous devriez voir ce qui suit :<\/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=\"Le formulaire de cr\u00e9ation de base de donn\u00e9es.\" width=\"1134\" height=\"315\"><figcaption class=\"wp-caption-text\">Le formulaire de cr\u00e9ation de base de donn\u00e9es.<\/figcaption><\/figure>\n<ol start=\"3\">\n<li>Ajoutez un nom de base de donn\u00e9es et cliquez sur <strong>Cr\u00e9er<\/strong>.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Modifiez le fichier <strong>.env<\/strong> de votre application \u00e0 la racine de votre application Laravel. Il contient toutes les variables d&rsquo;environnement utilis\u00e9es par l&rsquo;application. Localisez les variables pr\u00e9fix\u00e9es par <code>DB_<\/code> et modifiez-les avec les informations d&rsquo;identification de votre base de donn\u00e9es :<\/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>Cr\u00e9er une table<\/h2>\n<p>Les lignes de donn\u00e9es de votre application sont stock\u00e9es dans des tables. Pour cette application, vous n&rsquo;avez besoin que d&rsquo;une seule table, cr\u00e9\u00e9e \u00e0 l&rsquo;aide des <a href=\"https:\/\/laravel.com\/docs\/10.x\/migrations\" target=\"_blank\" rel=\"noopener noreferrer\">migrations Laravel<\/a>.<\/p>\n<ol start=\"1\">\n<li>Pour cr\u00e9er une table et g\u00e9n\u00e9rer un fichier de migration \u00e0 l&rsquo;aide de l&rsquo;interface en ligne de commande de Laravel, Artisan, ex\u00e9cutez :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:migration create_posts_table<\/code><\/pre>\n<p>La commande ci-dessus cr\u00e9e un nouveau fichier,<\/p>\n<p><strong>yyyy_mm_dd_hhmmss_create_posts_table.php<\/strong>, dans <strong>database\/migrations<\/strong>.<\/p>\n<ol start=\"2\">\n<li>Ouvrez le fichier <strong>yyyy_mm_dd_hhmmss_create_posts_table.php<\/strong> pour d\u00e9finir les colonnes que vous voulez dans votre table de base de donn\u00e9es dans la fonction up :<\/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>Ce code d\u00e9finit le contenu de la table posts. Elle comporte quatre colonnes : <code>id<\/code>, <code>title<\/code>, <code>body<\/code>, et <code>timestamps<\/code>.<\/p>\n<ol start=\"3\">\n<li>Ex\u00e9cutez les fichiers de migration dans le dossier <strong>database\/migrations<\/strong> pour cr\u00e9er des tables dans la base de donn\u00e9es :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan migrate<\/code><\/pre>\n<p>Le r\u00e9sultat ressemble \u00e0 ceci :<\/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=\"Ex\u00e9cution des migrations.\" width=\"614\" height=\"403\"><figcaption class=\"wp-caption-text\">Ex\u00e9cution des migrations.<\/figcaption><\/figure>\n<ol start=\"4\">\n<li>Acc\u00e9dez \u00e0 la base de donn\u00e9es que vous avez cr\u00e9\u00e9e pr\u00e9c\u00e9demment pour confirmer que vous avez cr\u00e9\u00e9 les tables :<\/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=\"Tables cr\u00e9\u00e9es.\" width=\"1053\" height=\"209\"><figcaption class=\"wp-caption-text\">Tables cr\u00e9\u00e9es.<\/figcaption><\/figure>\n<h2>Cr\u00e9er un contr\u00f4leur<\/h2>\n<p>Le contr\u00f4leur contient toutes les fonctions pour CRUD les posts de la base de donn\u00e9es.<\/p>\n<p>G\u00e9n\u00e9rez un fichier de contr\u00f4leur dans votre application Laravel en utilisant Artisan :<\/p>\n<pre><code class=\"language-sh\">php artisan make:controller PostController --api<\/code><\/pre>\n<p>L&rsquo;ex\u00e9cution de cette commande cr\u00e9e un fichier<strong> PostController.php<\/strong> dans <strong>app\/Http\/Controllers<\/strong>, avec un code passe-partout et des d\u00e9clarations de fonctions vides <code>index<\/code>, <code>store<\/code>, <code>show<\/code>, <code>update<\/code>, et <code>destroy<\/code>.<\/p>\n<h2>Cr\u00e9er des fonctions<\/h2>\n<p>Ensuite, cr\u00e9ez les fonctions qui stockent, indexent, mettent \u00e0 jour, d\u00e9truisent, cr\u00e9ent, affichent et modifient les donn\u00e9es.<\/p>\n<p>Vous pouvez les ajouter au fichier <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> illustr\u00e9 ci-dessous.<\/p>\n<h3>La fonction <code>store<\/code><\/h3>\n<p>La fonction <code>store<\/code> ajoute un message \u00e0 la base de donn\u00e9es.<\/p>\n<p>Allez jusqu&rsquo;\u00e0 la fonction <code>store<\/code> et ajoutez le code suivant \u00e0 l&rsquo;int\u00e9rieur des accolades vides :<\/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>Ce code prend un objet contenant le titre et le corps de l&rsquo;article, valide les donn\u00e9es, ajoute un nouvel article \u00e0 la base de donn\u00e9es si les donn\u00e9es sont valides et redirige l&rsquo;utilisateur vers la page d&rsquo;accueil avec un message de r\u00e9ussite.<\/p>\n<h3>La fonction <code>index<\/code><\/h3>\n<p>La fonction <code>index<\/code> r\u00e9cup\u00e8re tous les messages de la base de donn\u00e9es et envoie les donn\u00e9es au fichier <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> \u00e0 la page posts.index.<\/p>\n<h3>La fonction <code>update<\/code><\/h3>\n<p>La fonction &lt;<code>update<\/code> contient le <code>id<\/code> de l&rsquo;article \u00e0 mettre \u00e0 jour, le nouvel article <code>title<\/code> et le <code>body<\/code>. Apr\u00e8s avoir valid\u00e9 les donn\u00e9es, elle recherche l&rsquo;article ayant le m\u00eame <code>id<\/code>. Si elle le trouve, la fonction <code>update<\/code> met \u00e0 jour le message dans la base de donn\u00e9es avec les nouveaux <code>title<\/code> et <code>body<\/code>. Ensuite, elle redirige l&rsquo;utilisateur vers la page d&rsquo;accueil avec un message de r\u00e9ussite.<\/p>\n<h3>La fonction <code>destroy<\/code><\/h3>\n<p>La fonction <code>destroy<\/code> trouve un message avec le nom <code>id<\/code> et le supprime de la base de donn\u00e9es, puis redirige l&rsquo;utilisateur vers la page d&rsquo;accueil avec un message de succ\u00e8s.<\/p>\n<p>Les fonctions ci-dessus sont les fonctions utilis\u00e9es pour CRUD les messages de la base de donn\u00e9es. Cependant, vous devez d\u00e9finir d&rsquo;autres fonctions dans le contr\u00f4leur pour rendre les pages n\u00e9cessaires dans <strong>resources\/views\/posts\/<\/strong>.<\/p>\n<h3>La fonction <code>create<\/code><\/h3>\n<p>La fonction <code>create<\/code> rend la page <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> qui contient le formulaire d&rsquo;ajout d&rsquo;articles \u00e0 la base de donn\u00e9es.<\/p>\n<h3>La fonction <code>show<\/code><\/h3>\n<p>La fonction <code>show<\/code> trouve un article avec l&rsquo;adresse <code>id<\/code> dans la base de donn\u00e9es et affiche la page <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> avec l&rsquo;article.<\/p>\n<h3>La fonction <code>edit<\/code><\/h3>\n<p>La fonction <code>edit<\/code> trouve un article avec l&rsquo;adresse <code>id<\/code> dans la base de donn\u00e9es et affiche le fichier resources\/views\/posts\/show.blade.php avec le message <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> avec les d\u00e9tails de l&rsquo;article \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un formulaire.<\/p>\n<h2>Mise en place du mod\u00e8le<\/h2>\n<p>Le mod\u00e8le <code>Post<\/code> interagit avec la table <strong>posts<\/strong> de la base de donn\u00e9es.<\/p>\n<ol start=\"1\">\n<li>Pour cr\u00e9er un mod\u00e8le avec Artisan, ex\u00e9cutez :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:model Post<\/code><\/pre>\n<p>Ce code cr\u00e9e un fichier <strong>Post.php<\/strong> dans le dossier <strong>App\/Models<\/strong>.<\/p>\n<ol start=\"2\">\n<li>Cr\u00e9ez un tableau <code>&lt;fillable<\/code>. Ajoutez le code suivant dans la classe <code>Post<\/code> et sous la ligne <code>use HasFactory;<\/code><\/li>\n<\/ol>\n<pre><code class=\"language-php\">protected $fillable = [\n  'title',\n  'body',\n];<\/code><\/pre>\n<p>Ce code cr\u00e9e un tableau <code>fillable<\/code> qui vous permet d&rsquo;ajouter des \u00e9l\u00e9ments \u00e0 la base de donn\u00e9es depuis votre application Laravel.<\/p>\n<ol start=\"3\">\n<li>Connectez le mod\u00e8le <code>Post<\/code> au fichier <strong>PostController.php<\/strong>. Ouvrez <strong>PostController.php<\/strong> et ajoutez la ligne ci-dessous sous <code>use IlluminateHttpRequest;<\/code>. Elle se pr\u00e9sente comme suit :<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use Illuminate\\<span id=\"urn:enhancement-67518869-bd26-4c9e-9f04-ae85b6c5ccfe\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-21c652b7-ee88-4024-9e2d-0964707cfebb\" class=\"textannotation\">Request<\/span>;\nuse <span id=\"urn:enhancement-de7f2165-3ac9-4aa1-8bd9-a05b1244b3b2\" class=\"textannotation\">App<\/span>\\Models\\Post;<\/code><\/pre>\n<p>Le fichier <strong>PostController.php<\/strong> devrait maintenant ressembler \u00e0 ceci :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace <span id=\"urn:enhancement-a950192d-8e4f-4d00-bf77-a9db1eadef8f\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-c2e598fb-002c-46f2-97b3-b25b4ec3fd8b\" class=\"textannotation\">Http<\/span>\\Controllers;\nuse Illuminate\\<span id=\"urn:enhancement-64370128-9e21-4e64-bb31-2d386061c922\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-959ec531-b9d6-48f5-8bd0-abb2a4d127bd\" class=\"textannotation\">Request<\/span>;\nuse <span id=\"urn:enhancement-dcb1566b-fa77-4698-8f7b-7c4b08ea8649\" class=\"textannotation\">App<\/span>\\Models\\Post;\n<span id=\"urn:enhancement-650c58e3-4afa-4cc2-91f0-ed3d9f590adf\" class=\"textannotation\">class<\/span> PostController extends <span id=\"urn:enhancement-cf901cc4-1bfd-4c6f-b9e4-092f1fa0fe1e\" class=\"textannotation\">Controller<\/span>\n{\n  \/**\n   * Display a listing of the resource.\n   *\n   * @<span id=\"urn:enhancement-9caeca66-4b6d-49cf-875b-366ddb39a793\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-32d7da1b-0ac3-4356-b0cb-5b8e1a368369\" class=\"textannotation\">Http<\/span>\\Response\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  \\Illuminate\\<span id=\"urn:enhancement-6385597e-4dfe-4624-ae88-bb02be68b0e2\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-43408ab6-60e4-4742-a0f3-1a91155fe8bf\" class=\"textannotation\">Request<\/span>  $request\n   * @<span id=\"urn:enhancement-d8f7974e-f96b-482f-90c6-5f7042f273c8\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-a1921f95-77f6-4258-ad88-e841b945123d\" class=\"textannotation\">Http<\/span>\\Response\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  \\Illuminate\\<span id=\"urn:enhancement-e596d7c5-6178-4a88-a37f-8c65f1c29ebc\" class=\"textannotation\">Http<\/span>\\<span id=\"urn:enhancement-6e27169a-d4c5-492a-b61f-af6a84c67716\" class=\"textannotation\">Request<\/span>  $request\n   * @param  int  $id\n   * @<span id=\"urn:enhancement-26fc00fe-b1da-4722-8108-5e47f73ed29b\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-e6fbc593-968f-4cbe-b1ca-0b4e30650981\" class=\"textannotation\">Http<\/span>\\Response\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   * @<span id=\"urn:enhancement-9de6dcea-6723-4acd-8142-750f2110791a\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-fd41acbc-d7a2-4807-af4e-f95e133f2a1a\" class=\"textannotation\">Http<\/span>\\Response\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   * @<span id=\"urn:enhancement-df39fc2b-aa20-4350-8d55-bacad97e6967\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-fc73a3f8-5969-413e-b4b7-e32384d3255b\" class=\"textannotation\">Http<\/span>\\Response\n   *\/\n  public function create()\n  {\n    return view('posts.create');\n  }\n  \/**\n   * Display the specified resource.\n   *\n   * @param  int  $id\n   * @<span id=\"urn:enhancement-c56dd195-4e5d-4b82-84b6-4a45e586314d\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-eabccda1-26e9-46ea-aaa1-b04752f17984\" class=\"textannotation\">Http<\/span>\\Response\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   * @<span id=\"urn:enhancement-a688aafd-e490-48f2-81dc-c30ec9adeed0\" class=\"textannotation\">return<\/span> \\Illuminate\\<span id=\"urn:enhancement-ed326f7f-c022-47ad-bf52-a964e0820e37\" class=\"textannotation\">Http<\/span>\\Response\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>Ajouter des routes<\/h2>\n<p>Apr\u00e8s avoir cr\u00e9\u00e9 les fonctions du contr\u00f4leur et le mod\u00e8le <code>Post<\/code>, vous devez ajouter des routes pour les fonctions de votre contr\u00f4leur.<\/p>\n<ol start=\"1\">\n<li>Ouvrez <strong>routes\/web.php<\/strong> et supprimez la route \u00ab boilerplate \u00bb g\u00e9n\u00e9r\u00e9e par l&rsquo;application. Remplacez-la par le code ci-dessous pour connecter les fonctions du contr\u00f4leur \u00e0 leurs routes respectives :<\/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>Pour connecter les routes, ouvrez <strong>app\/Http\/Controllers\/PostController.php<\/strong> et ajoutez la ligne ci-dessous sous la ligne\u00a0<code>use Illuminate\\Support\\Facades\\Route;<\/code>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Route;\nuse <span id=\"urn:enhancement-934f8fc1-a9e5-41ef-b077-23d93e6bb6a4\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-f61d283e-ce44-4083-b783-7a8bb7ee02e7\" class=\"textannotation\">Http<\/span>\\Controllers\\PostController;<\/code><\/pre>\n<p>Le fichier <strong>routes\/web.php<\/strong> devrait maintenant ressembler \u00e0 ceci :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse Illuminate\\Support\\Facades\\Route;\nuse <span id=\"urn:enhancement-23d1f878-3c3a-406b-927a-46c30d6ab168\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-3f696c22-44c7-47c1-9831-60a6e5f8ab44\" class=\"textannotation\">Http<\/span>\\Controllers\\PostController;\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>G\u00e9n\u00e9rer les fichiers Blade<\/h2>\n<p>Maintenant que vous avez les routes, vous pouvez cr\u00e9er les fichiers <a href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-blade\/\">Laravel Blade<\/a>. Avant d&rsquo;utiliser Artisan pour g\u00e9n\u00e9rer les fichiers Blade, cr\u00e9ez la commande <code>make:view<\/code>, avec laquelle vous pouvez g\u00e9n\u00e9rer les fichiers <strong>blade.php<\/strong>.<\/p>\n<ol start=\"1\">\n<li>Ex\u00e9cutez le code suivant dans le CLI pour cr\u00e9er un fichier de commande <strong>MakeViewCommand<\/strong> dans le dossier <strong>app\/Console\/Commands <\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:command MakeViewCommand<\/code><\/pre>\n<ol start=\"2\">\n<li>Cr\u00e9ez une commande pour g\u00e9n\u00e9rer des fichiers <strong>.blade.php<\/strong> \u00e0 partir de l&rsquo;interface de programmation en rempla\u00e7ant le code du fichier <strong>MakeViewCommand<\/strong> par le suivant :<\/li>\n<\/ol>\n<pre><code class=\"language-php\">&lt;?php\nnamespace <span id=\"urn:enhancement-eac678c5-ed75-4490-b609-144d77b6ef35\" class=\"textannotation\">App<\/span>\\Console\\Commands;\nuse Illuminate\\Console\\Command;\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>Cr\u00e9er une page d&rsquo;accueil<\/h3>\n<p>Cr\u00e9ez ensuite votre page d&rsquo;accueil. La page d&rsquo;accueil est le fichier <strong>index.blade.php<\/strong>, qui r\u00e9pertorie tous les articles.<\/p>\n<ol start=\"1\">\n<li>Pour cr\u00e9er la page d&rsquo;accueil, ex\u00e9cutez :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.index<\/code><\/pre>\n<p>Cela cr\u00e9e un dossier <strong>posts<\/strong> dans le dossier <strong>\/resources\/views<\/strong> et un fichier <strong>index.blade.php<\/strong> en dessous. Le chemin r\u00e9sultant est <strong>\/resources\/views\/posts\/index.blade.php<\/strong>.<\/p>\n<ol start=\"2\">\n<li>Ajoutez le code suivant dans le fichier <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>Le code ci-dessus cr\u00e9e une page HTML simple qui utilise <a href=\"https:\/\/getbootstrap.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bootstrap<\/a> pour le style. Il \u00e9tablit une barre de navigation et un mod\u00e8le de grille qui r\u00e9pertorie tous les articles de la base de donn\u00e9es avec des d\u00e9tails et deux boutons d&rsquo;action &#8211; modifier et supprimer &#8211; en utilisant l&rsquo;aide <code>@foreach<\/code> Blade.<\/p>\n<p>Le bouton <strong>Modifier<\/strong> permet \u00e0 l&rsquo;utilisateur d&rsquo;acc\u00e9der \u00e0 la page <strong>Modifier l&rsquo;article<\/strong>, o\u00f9 il peut modifier l&rsquo;article. Le bouton <strong>Supprimer<\/strong> supprime l&rsquo;article de la base de donn\u00e9es en utilisant <code>{{ route('posts.destroy', $post-&gt;id) }}<\/code> avec une m\u00e9thode <code>DELETE<\/code>.<\/p>\n<p><strong>Remarque <\/strong>: le code de la barre de navigation pour tous les fichiers est le m\u00eame que celui du fichier pr\u00e9c\u00e9dent.<\/p>\n<ol start=\"3\">\n<li>Cr\u00e9ez la page <strong>create.blade.php<\/strong>. Le fichier Blade appel\u00e9 <strong>create<\/strong> ajoute des articles \u00e0 la base de donn\u00e9es. Utilisez la commande suivante pour g\u00e9n\u00e9rer le fichier :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.create<\/code><\/pre>\n<p>Cela g\u00e9n\u00e8re un fichier <strong>create.blade.php<\/strong> dans le dossier<strong> \/resources\/views\/posts. <\/strong><\/p>\n<ol start=\"4\">\n<li>Ajoutez le code suivant au fichier <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>Le code ci-dessus cr\u00e9e un formulaire avec les champs <code>title<\/code> et <code>body<\/code> et un bouton <code>submit<\/code> pour ajouter un message \u00e0 la base de donn\u00e9es via l&rsquo;action <code>{{ route('posts.store') }}<\/code> avec une m\u00e9thode <code>POST<\/code>.<\/p>\n<ol start=\"5\">\n<li>Cr\u00e9ez la page <strong>Modifier l&rsquo;article<\/strong> pour modifier les articles dans la base de donn\u00e9es. Utilisez la commande suivante pour g\u00e9n\u00e9rer le fichier :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan make:view posts.edit<\/code><\/pre>\n<p>Cela cr\u00e9e un fichier <strong>edit.blade.php<\/strong> dans le dossier <strong>\/resources\/views\/posts. <\/strong><\/p>\n<ol start=\"6\">\n<li>Ajoutez le code suivant au fichier <strong>edit.blade.php<\/strong>:<\/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>Le code ci-dessus cr\u00e9e un formulaire avec des champs <code>title<\/code> et <code>body<\/code> et un bouton de soumission pour modifier un article avec le num\u00e9ro sp\u00e9cifi\u00e9 <code>id<\/code> dans la base de donn\u00e9es via l&rsquo;action <code>{{ route('posts.update') }}<\/code> avec une m\u00e9thode <code>PUT<\/code>.<\/p>\n<ol start=\"7\">\n<li>Red\u00e9marrez ensuite votre serveur d&rsquo;application \u00e0 l&rsquo;aide du code ci-dessous :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan serve<\/code><\/pre>\n<p>Visitez <code>http:\/\/127.0.0.1:8000<\/code> sur votre navigateur pour voir votre nouveau blog. Cliquez sur le bouton <strong>Ajouter un article<\/strong> pour ajouter de nouveaux articles.<\/p>\n<h2>D\u00e9ployer et tester votre application CRUD<\/h2>\n<p>Pr\u00e9parez votre application pour le d\u00e9ploiement comme suit.<\/p>\n<ol start=\"1\">\n<li>Facilitez le d\u00e9ploiement en d\u00e9clarant le dossier public. Ajoutez un fichier <strong>.htaccess<\/strong> \u00e0 la racine du dossier de l&rsquo;application avec le code suivant :<\/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>Forcez votre application \u00e0 utiliser <code>HTTPS<\/code> en ajoutant le code suivant au-dessus de vos routes dans le fichier <strong>routes\/web.php<\/strong>:<\/li>\n<\/ol>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\<span id=\"urn:enhancement-bedb363f-7bd9-4b36-8346-d6b2b51a133f\" class=\"textannotation\">URL<\/span>;\n<span id=\"urn:enhancement-b6b4e6bf-631c-46e7-807b-f28a8534177b\" class=\"textannotation\">URL<\/span>::forceScheme('https');<\/code><\/pre>\n<ol start=\"3\">\n<li>Poussez votre code vers un d\u00e9p\u00f4t Git. Kinsta prend en charge les d\u00e9ploiements \u00e0 partir de GitHub, GitLab ou Bitbucket.<\/li>\n<\/ol>\n<h3>Configurer un projet sur MyKinsta<\/h3>\n<ol start=\"1\">\n<li>Cr\u00e9ez un compte <a href=\"https:\/\/kinsta.com\/fr\/mykinsta\/\">MyKinsta<\/a> si vous n&rsquo;en avez pas d\u00e9j\u00e0 un.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Connectez-vous \u00e0 votre compte et cliquez sur le bouton <strong>Ajouter un service<\/strong> dans le tableau de bord pour cr\u00e9er une nouvelle application.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Si vous ne connaissez pas encore l&rsquo;application, connectez-vous \u00e0 votre compte GitHub, GitLab ou Bitbucket et donnez des autorisations sp\u00e9cifiques.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Remplissez le formulaire et ajoutez la valeur <code>APP_KEY<\/code>. Vous pouvez trouver la valeur correspondante dans votre fichier <strong>.env<\/strong>.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li>S\u00e9lectionnez vos ressources de construction et si vous voulez utiliser le chemin de construction de votre application ou construire votre application avec Dockerfile. Pour cette d\u00e9monstration, laissez MyKinsta construire l&rsquo;application sur la base de votre d\u00e9p\u00f4t.<\/li>\n<\/ol>\n<ol start=\"6\">\n<li>Sp\u00e9cifiez les diff\u00e9rents processus que vous voulez ex\u00e9cuter pendant le d\u00e9ploiement. Vous pouvez laisser ce champ vide \u00e0 ce stade.<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Enfin, ajoutez votre moyen de paiement.<\/li>\n<\/ol>\n<p>Apr\u00e8s avoir confirm\u00e9 votre moyen de paiement, MyKinsta d\u00e9ploie votre application et vous attribue une URL comme indiqu\u00e9 ci-dessous :<\/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=\"D\u00e9ploiement r\u00e9ussi.\" width=\"492\" height=\"618\"><figcaption class=\"wp-caption-text\">D\u00e9ploiement r\u00e9ussi.<\/figcaption><\/figure>\n<p>Vous pouvez visiter le lien, mais vous obtenez une page <code>500 | Server Error<\/code> parce que l&rsquo;application a besoin d&rsquo;une connexion valide \u00e0 la base de donn\u00e9es pour fonctionner. La section suivante r\u00e9sout ce probl\u00e8me.<\/p>\n<h3>Cr\u00e9er une base de donn\u00e9es via MyKinsta<\/h3>\n<ol start=\"1\">\n<li>Pour cr\u00e9er une base de donn\u00e9es, allez sur votre tableau de bord MyKinsta et cliquez sur <strong>Ajouter un service<\/strong>.<\/li>\n<\/ol>\n<ol start=\"2\">\n<li>S\u00e9lectionnez <strong>Base de donn\u00e9es<\/strong> et remplissez le formulaire avec le nom et le type de votre base de donn\u00e9es, votre nom d&rsquo;utilisateur et votre mot de passe. Ajoutez un centre de donn\u00e9es et une taille de base de donn\u00e9es adapt\u00e9e \u00e0 votre application.<\/li>\n<\/ol>\n<ol start=\"3\">\n<li>La page suivante affiche le r\u00e9capitulatif des co\u00fbts et votre moyen de paiement. Cliquez sur <strong>Cr\u00e9er une base de donn\u00e9es<\/strong> pour terminer la proc\u00e9dure.<\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Apr\u00e8s avoir cr\u00e9\u00e9 la base de donn\u00e9es, MyKinsta vous redirige vers votre liste de services. Cliquez sur la base de donn\u00e9es que vous venez de cr\u00e9er et descendez jusqu&rsquo;\u00e0 <strong>Connexions externes<\/strong>. Copiez les informations d&rsquo;identification de la base de donn\u00e9es.<\/li>\n<\/ol>\n<ol start=\"5\">\n<li>Retournez \u00e0 la page <strong>D\u00e9ploiement<\/strong> de l&rsquo;application et cliquez sur <strong>R\u00e9glages<\/strong>. Ensuite, faites d\u00e9filer vers le bas jusqu&rsquo;\u00e0 <strong>Variables d&rsquo;environnement<\/strong> et cliquez sur <strong>Ajouter des variables d&rsquo;environnement<\/strong>. Ajoutez les informations d&rsquo;identification de la base de donn\u00e9es en tant que variables d&rsquo;environnement dans l&rsquo;ordre suivant :<\/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>La liste des variables d&rsquo;environnement de l&rsquo;application devrait maintenant ressembler \u00e0 ceci :<\/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=\"La liste des variables .env.\" width=\"561\" height=\"629\"><figcaption class=\"wp-caption-text\">La liste des variables .env.<\/figcaption><\/figure>\n<ol start=\"6\">\n<li>Allez sur la page <strong>D\u00e9ploiements<\/strong> de votre application et d\u00e9ployez manuellement votre application en cliquant sur <strong>D\u00e9ployer maintenant <\/strong>pour appliquer ces changements. Jusqu&rsquo;\u00e0 pr\u00e9sent, vous avez cr\u00e9\u00e9 une base de donn\u00e9es et l&rsquo;avez connect\u00e9e \u00e0 votre application.<\/li>\n<\/ol>\n<ol start=\"7\">\n<li>Enfin, pour cr\u00e9er les tables de votre base de donn\u00e9es MyKinsta, connectez la base de donn\u00e9es \u00e0 votre application locale en mettant \u00e0 jour votre fichier <strong>.env<\/strong> avec les m\u00eames informations d&rsquo;identification que vous avez saisies dans votre application MyKinsta et ex\u00e9cutez la commande suivante :<\/li>\n<\/ol>\n<pre><code class=\"language-sh\">php artisan migrate<\/code><\/pre>\n<p>Cette commande ex\u00e9cute tous les fichiers de migration. Elle cr\u00e9e toutes les tables d\u00e9finies dans votre application MyKinsta.<\/p>\n<p>Maintenant, vous pouvez tester votre application avec l&rsquo;URL assign\u00e9e apr\u00e8s le premier d\u00e9ploiement.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Laravel est un framework complet pour cr\u00e9er des applications web robustes et \u00e9volutives qui n\u00e9cessitent des fonctionnalit\u00e9s CRUD. Gr\u00e2ce \u00e0 sa syntaxe intuitive et \u00e0 ses puissantes fonctionnalit\u00e9s, Laravel facilite l&rsquo;int\u00e9gration d&rsquo;op\u00e9rations CRUD dans votre application.<\/p>\n<p>Cet article couvre les concepts fondamentaux des op\u00e9rations CRUD et la mani\u00e8re de les mettre en \u0153uvre en utilisant les fonctionnalit\u00e9s int\u00e9gr\u00e9es de Laravel. Il explique \u00e9galement :<\/p>\n<ul>\n<li>Comment cr\u00e9er une base de donn\u00e9es dans MyKinsta et la connecter \u00e0 votre application<\/li>\n<li>Comment utiliser les migrations de Laravel pour d\u00e9finir la table de la base de donn\u00e9es, cr\u00e9er le fichier du contr\u00f4leur et ses fonctions<\/li>\n<li>D\u00e9finir un mod\u00e8le et le connecter au contr\u00f4leur. Le routage de Laravel g\u00e9n\u00e8re des fichiers Blade pour cr\u00e9er les pages et formulaires correspondants et pour d\u00e9ployer et tester l&rsquo;application en utilisant MyKinsta<\/li>\n<\/ul>\n<p>Maintenant que vous avez vu \u00e0 quel point il est facile d&rsquo;effectuer des op\u00e9rations CRUD dans Laravel, <a href=\"https:\/\/my.kinsta.com\/login?lang=fr\">consultez MyKinsta<\/a> pour le d\u00e9veloppement et l&rsquo;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">h\u00e9bergement d&rsquo;applications<\/a> web.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Laravel est un framework PHP populaire qui permet de cr\u00e9er des applications web modernes et dynamiques dans le paysage actuel du d\u00e9veloppement web, en constante \u00e9volution. &#8230;<\/p>\n","protected":false},"author":290,"featured_media":71923,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[986],"class_list":["post-71922","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>Comment CRUD (cr\u00e9er, lire, mettre \u00e0 jour, supprimer) avec Laravel<\/title>\n<meta name=\"description\" content=\"Les op\u00e9rations CRUD constituent l&#039;\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec 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\/fr\/blog\/crud-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel\" \/>\n<meta property=\"og:description\" content=\"Les op\u00e9rations CRUD constituent l&#039;\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-17T08:59:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-17T13:51:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/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=\"Les op\u00e9rations CRUD constituent l&#039;\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marcia Ramos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/\"},\"author\":{\"name\":\"Marcia Ramos\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\"},\"headline\":\"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel\",\"datePublished\":\"2023-08-17T08:59:25+00:00\",\"dateModified\":\"2024-09-17T13:51:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/\"},\"wordCount\":2720,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/\",\"name\":\"Comment CRUD (cr\u00e9er, lire, mettre \u00e0 jour, supprimer) avec Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg\",\"datePublished\":\"2023-08-17T08:59:25+00:00\",\"dateModified\":\"2024-09-17T13:51:23+00:00\",\"description\":\"Les op\u00e9rations CRUD constituent l'\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg\",\"width\":6084,\"height\":3042},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"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\/fr\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116\",\"name\":\"Marcia Ramos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/marciaramos\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment CRUD (cr\u00e9er, lire, mettre \u00e0 jour, supprimer) avec Laravel","description":"Les op\u00e9rations CRUD constituent l'\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec 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\/fr\/blog\/crud-laravel\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel","og_description":"Les op\u00e9rations CRUD constituent l'\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec Laravel.","og_url":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-08-17T08:59:25+00:00","article_modified_time":"2024-09-17T13:51:23+00:00","og_image":[{"width":6084,"height":3042,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg","type":"image\/jpeg"}],"author":"Marcia Ramos","twitter_card":"summary_large_image","twitter_description":"Les op\u00e9rations CRUD constituent l'\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec Laravel.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Marcia Ramos","Dur\u00e9e de lecture estim\u00e9e":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/"},"author":{"name":"Marcia Ramos","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116"},"headline":"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel","datePublished":"2023-08-17T08:59:25+00:00","dateModified":"2024-09-17T13:51:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/"},"wordCount":2720,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/","url":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/","name":"Comment CRUD (cr\u00e9er, lire, mettre \u00e0 jour, supprimer) avec Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg","datePublished":"2023-08-17T08:59:25+00:00","dateModified":"2024-09-17T13:51:23+00:00","description":"Les op\u00e9rations CRUD constituent l'\u00e9pine dorsale de toute application bas\u00e9e sur une base de donn\u00e9es. Apprenez \u00e0 effectuer des op\u00e9rations CRUD (cr\u00e9ation, lecture, mise \u00e0 jour et suppression) avec Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/08\/laravel-crud.jpg","width":6084,"height":3042},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/crud-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Comment cr\u00e9er, lire, mettre \u00e0 jour et supprimer (CRUD) avec Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","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\/fr\/#\/schema\/person\/72bff0015d3fb3ba3d8a85494dc0b116","name":"Marcia Ramos","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/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\/fr\/blog\/author\/marciaramos\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/71922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=71922"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/71922\/revisions"}],"predecessor-version":[{"id":71929,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/71922\/revisions\/71929"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/71922\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/71923"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=71922"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=71922"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=71922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}