{"id":29041,"date":"2021-06-02T19:24:00","date_gmt":"2021-06-02T16:24:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29041"},"modified":"2021-10-17T04:28:02","modified_gmt":"2021-10-17T01:28:02","slug":"hur-man-gor-databaserning-i-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-gor-databaserning-i-laravel\/","title":{"rendered":"Hur man g\u00f6r databaserning i Laravel"},"content":{"rendered":"<p>Tidigare har jag publicerat en artikel <a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-satter-databas-med-php-faker-library\/\" title=\"How to Seed Database in PHP using Faker Library\" >How to Seed Database in PHP using Faker Library<\/a>. N\u00e4r jag unders\u00f6kte detta \u00e4mne fann jag att Laravel ocks\u00e5 anv\u00e4nder samma bibliotek f\u00f6r s\u00e5dd av databasen. Eftersom jag har skrivit en artikel om detta \u00e4mne f\u00f6r PHP best\u00e4mde jag mig f\u00f6r att ocks\u00e5 skriva ett inl\u00e4gg p\u00e5 Laravel-databasen. Detta beror p\u00e5 att Laravel anv\u00e4nder sin egen process f\u00f6r att s\u00e5dd databasen.<\/p>\n<h3>Vad \u00e4r databass\u00e5dd?<\/h3>\n<p>Databass\u00e5dd betyder att du fyller dina databastabeller med testdata programmatiskt. Med detta tillv\u00e4gag\u00e5ngss\u00e4tt kan man skriva in tusentals poster i databasen inom n\u00e5gra minuter. Det \u00e4r ett effektivt s\u00e4tt snarare \u00e4n att g\u00f6ra det manuellt. Du kanske vill ha falska data f\u00f6r att testa din applikation och s\u00e5dd databasen genom programmet sparar massor av tid.<\/p>\n<h3>Faker-biblioteket<\/h3>\n<p><a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Faker<\/a> \u00e4r ett bibliotek med \u00f6ppen k\u00e4llkod som genererar falska data f\u00f6r din applikations databas. Med hj\u00e4lp av Faker kan man infoga tusentals poster i databasen p\u00e5 n\u00e5gra minuter. Detta bibliotek sparar ett tr\u00e5kigt jobb f\u00f6r datainmatning f\u00f6r utvecklare. Du kan f\u00e5 n\u00e4stan vilken typ av data du vill. Biblioteket genererar ett falskt e-postmeddelande, namn, mobilnummer, ord, meningar, stycken, slumptal etc. Du kan l\u00e4sa vilken typ av data de tillhandah\u00e5ller i <a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentationen<\/a>.<\/p>\n<p>Laravel installerar detta bibliotek i sin k\u00e4rna. Det betyder att du inte beh\u00f6ver installera det separat. Med det sagt, l\u00e5t oss ta en titt p\u00e5 hur man g\u00f6r databass\u00e5dd i Laravel.<\/p>\n<h3>Komma ig\u00e5ng<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng ska jag skapa en &#8217;kundtabell med kolumnnamn, e-post och bio. Vi kommer att se processen f\u00f6r s\u00e5dd av enkelbordet. P\u00e5 samma s\u00e4tt kan anv\u00e4ndare s\u00e5 m\u00e5nga tabeller som de vill.<\/p>\n<p>Skapa en migrering f\u00f6r kundtabell med kommandot:<\/p>\n<pre><code>php artisan make:migration create_customers_table<\/code><\/pre>\n<p>\u00d6ppna migreringsfilen och l\u00e4gg till kolumnerna till &quot;upp&quot; -metoden enligt nedan.<\/p>\n<pre><code>public function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('customers', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;id();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('email');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;text('bio');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>K\u00f6r migreringskommandot som skapar en &quot;kundtabell&quot; i din databas.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Skapa sedan en modell &#8217;Kund&#8217; som mappas till &#8217;kundernas&#8217; tabell. Fr\u00e5n och med Laravel 8.x skapas dina modeller i katalogen &#8217;App \/ Modeller&#8217;. F\u00f6r denna handledning antar jag att du anv\u00e4nder Laravel 8.x. I den \u00e4ldre versionen av Laravel m\u00e5ste du justera modellv\u00e4gen.<\/p>\n<pre><code>php artisan make:model Customer<\/code><\/pre>\n<h3>Database Seeding in Laravel<\/h3>\n<p>Att s\u00e5 en databas i Laravel kr\u00e4ver att du f\u00f6ljer n\u00e5gra steg som skriver s\u00e5maskiner, skapar en modellfabrik och k\u00f6r s\u00e5maskiner. L\u00e5t oss g\u00f6ra det en efter en.<\/p>\n<h4>Writing Seeders<\/h4>\n<p>Om du tittar p\u00e5 Laravel-filsystemet m\u00e4rker du katalogen <code>database\/seeders<\/code>. Alla fr\u00f6klasser kommer in i den h\u00e4r katalogen. En fr\u00f6klass har <code>run<\/code>metoden varifr\u00e5n du kan infoga data i tabellen.<\/p>\n<p>Skapa en seedklass CustomerSeeder med kommandot:<\/p>\n<pre><code>php artisan make:seeder CustomerSeeder<\/code><\/pre>\n<p>N\u00e4r du har k\u00f6rt detta kommando b\u00f6r du se <code>CustomerSeeder.php<\/code>filen skapad under <code>database\/seeders<\/code>. \u00d6ppna den h\u00e4r filen och <code>run<\/code>l\u00e4gg till nedanst\u00e5ende kod till funktionen.<\/p>\n<pre><code>public function run()\n{\n\u00a0\u00a0\u00a0\u00a0AppModelsCustomer::factory()-&gt;count(50)-&gt;create()-&gt;each(function ($customer) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$customer-&gt;save();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>H\u00e4r ringer jag kundfabriken som vi kommer att skapa i n\u00e4sta steg. Observera att jag skickade v\u00e4rdet som 50 till &quot;r\u00e4kna&quot; -metoden. Det betyder att 50 rader ska infogas i tabellen &#8217;kunder&#8217;. Justera detta v\u00e4rde som du vill.<\/p>\n<h4>Skapa fabriker<\/h4>\n<p>Koden jag har skrivit in <code>CustomerSeeder<\/code>kommer att leta efter en fabrik f\u00f6r att f\u00e5 testdata. Det betyder att vi m\u00e5ste skapa en modellfabrik. Jag kommer att ge ett namn till fabriken som CustomerFactory. K\u00f6r kommandot f\u00f6r att generera modellfabriken.<\/p>\n<pre><code>php artisan make:factory CustomerFactory --model=Customer<\/code><\/pre>\n<p>Detta kommando skapar en <code>CustomerFactory.php<\/code>inuti <code>database\/factories<\/code>katalogen. \u00d6ppna den h\u00e4r filen och generera testdata enligt definitionsmetoden enligt f\u00f6ljande.<\/p>\n<pre><code>public function definition()\n{\n\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name' =&gt; $this-&gt;faker-&gt;name,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; $this-&gt;faker-&gt;unique()-&gt;safeEmail,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'bio' =&gt; $this-&gt;faker-&gt;text,\n\u00a0\u00a0\u00a0\u00a0];\n}<\/code><\/pre>\n<p>Ovanst\u00e5ende matris returnerar ett slumpm\u00e4ssigt valt namn, e-post och text f\u00f6r bio.<\/p>\n<h4>Running Seeders<\/h4>\n<p>Vi \u00e4r alla inst\u00e4llda p\u00e5 s\u00e5maskinen och fabriken. K\u00f6r nu v\u00e5r s\u00e5maskin med kommandot nedan.<\/p>\n<pre><code>php artisan db:seed --class=CustomerSeeder<\/code><\/pre>\n<p>Kontrollera din &#8217;kundtabell och den ska ha de 50 dummy-posterna infogade.<\/p>\n<p>Ovanst\u00e5ende kommando k\u00f6r en enda s\u00e5maskin som vi passerade uttryckligen. L\u00e5t oss s\u00e4ga att du vill skapa flera seeders och k\u00f6ra dem alla med ett enda kommando. I s\u00e5dana fall b\u00f6r du ringa din seeders fr\u00e5n den <code>DatabaseSeeder<\/code>som finns i samma katalog <code>database\/seeders<\/code>.<\/p>\n<pre><code>public function run()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;call(CustomerSeeder::class);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ call as many seeders you wish\n\u00a0\u00a0\u00a0\u00a0}<\/code><\/pre>\n<p>Anv\u00e4ndaren kan skapa s\u00e5 m\u00e5nga s\u00e5maskiner enligt deras krav och ringa dem fr\u00e5n den h\u00e4r <code>run<\/code>metoden.<\/p>\n<p>Slutligen k\u00f6r seedarna med kommandot nedan.<\/p>\n<pre><code>php artisan db:seed<\/code><\/pre>\n<p>Det kommer att kalla alla seedarna fr\u00e5n <code>run<\/code>metoden och utf\u00f6ra den.<\/p>\n<p>Jag hoppas att du f\u00f6rst\u00e5r om s\u00e5dd databaser i Laravel. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/paypal-payments-pro-integration-i-laravel\/\" title=\"PayPal Payments Pro-integration i Laravel\">PayPal Payments Pro-integration i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-skapar-honungspott-for-att-bekampa-skrappost-i-laravel\/\" title=\"Skapa Honeypot f\u00f6r att bek\u00e4mpa skr\u00e4ppost i Laravel\">Skapa Honeypot f\u00f6r att bek\u00e4mpa skr\u00e4ppost i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/en-guide-om-hur-du-lagger-till-google-recaptcha-v3-till-din-laravel-webbplats\/\" title=\"L\u00e4gga till Google reCAPTCHA v3 till din Laravel-webbplats\">L\u00e4gga till Google reCAPTCHA v3 till din Laravel-webbplats<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Letar du efter databas s\u00e5dd i Laravel? I den h\u00e4r artikeln visar jag hur man skapar och k\u00f6r s\u00e5dd i Laravel-applikationen. Faker bibliotek<\/p>\n","protected":false},"author":1,"featured_media":21644,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[503],"tags":[850],"class_list":["post-29041","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=29041"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29041\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}