{"id":28922,"date":"2021-06-02T19:38:00","date_gmt":"2021-06-02T16:38:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28922"},"modified":"2021-10-18T03:37:48","modified_gmt":"2021-10-18T00:37:48","slug":"jak-wykonac-rozsiewanie-bazy-danych-w-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-wykonac-rozsiewanie-bazy-danych-w-laravel\/","title":{"rendered":"Jak wykona\u0107 rozsiewanie bazy danych w Laravel?"},"content":{"rendered":"<p>W przesz\u0142o\u015bci publikowa\u0142em artyku\u0142 <a href=\"https:\/\/themewp.inform.click\/pl\/jak-zainicjowac-baze-danych-za-pomoca-biblioteki-php-faker\/\" title=\"How to Seed Database in PHP using Faker Library\" >How to Seed Database in PHP using Faker Library<\/a>. Podczas badania tego tematu odkry\u0142em, \u017ce Laravel r\u00f3wnie\u017c u\u017cywa tej samej biblioteki do zape\u0142niania bazy danych. Poniewa\u017c pisa\u0142em artyku\u0142 na ten temat dla PHP, postanowi\u0142em napisa\u0107 r\u00f3wnie\u017c post o seedingu bazy danych Laravel. Dzieje si\u0119 tak, poniewa\u017c Laravel u\u017cywa w\u0142asnego procesu do zape\u0142niania bazy danych.<\/p>\n<h3>Co to jest wysiew bazy danych?<\/h3>\n<p>Inicjowanie bazy danych oznacza programowe wype\u0142nienie tabel bazy danych danymi testowymi. Dzi\u0119ki takiemu podej\u015bciu mo\u017cna w ci\u0105gu kilku minut wprowadzi\u0107 do bazy tysi\u0105ce rekord\u00f3w. Jest to skuteczny spos\u00f3b, a nie robienie tego r\u0119cznie. Mo\u017cesz chcie\u0107 fikcyjnych danych, aby przetestowa\u0107 twoj\u0105 aplikacj\u0119, a umieszczanie bazy danych w programie pozwala zaoszcz\u0119dzi\u0107 mn\u00f3stwo czasu.<\/p>\n<h3>Biblioteka fa\u0142szywych<\/h3>\n<p><a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Faker<\/a> to biblioteka typu open source, kt\u00f3ra generuje fa\u0142szywe dane dla bazy danych aplikacji. Za pomoc\u0105 Fakera mo\u017cna w kilka minut wstawi\u0107 tysi\u0105ce wpis\u00f3w do bazy danych. Ta biblioteka oszcz\u0119dza programistom nudne zadanie wprowadzania danych. Mo\u017cesz uzyska\u0107 prawie ka\u017cdy rodzaj danych, kt\u00f3re chcesz. Biblioteka generuje fa\u0142szywy e-mail, imi\u0119 i nazwisko, numer telefonu kom\u00f3rkowego, s\u0142owa, zdania, akapity, liczby losowe itp. Mo\u017cesz przeczyta\u0107, jakie dane podaj\u0105 w <a href=\"https:\/\/github.com\/fzaninotto\/Faker\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji<\/a>.<\/p>\n<p>Laravel instaluje t\u0119 bibliotek\u0119 w swoim rdzeniu. Oznacza to, \u017ce nie musisz instalowa\u0107 go osobno. Bior\u0105c to pod uwag\u0119, przyjrzyjmy si\u0119, jak wykona\u0107 seeding bazy danych w Laravel.<\/p>\n<h3>Pierwsze kroki<\/h3>\n<p>Aby rozpocz\u0105\u0107, mam zamiar utworzy\u0107 tabel\u0119 \u201eklienci&quot; z nazwami kolumn, adresem e-mail i biografi\u0105. Zobaczymy proces rozstawiania pojedynczego sto\u0142u. W ten sam spos\u00f3b u\u017cytkownicy mog\u0105 umieszcza\u0107 dowoln\u0105 liczb\u0119 tabel.<\/p>\n<p>Utw\u00f3rz tabel\u0119 migracji dla klient\u00f3w za pomoc\u0105 polecenia:<\/p>\n<pre><code>php artisan make:migration create_customers_table<\/code><\/pre>\n<p>Otw\u00f3rz plik migracji i dodaj kolumny do metody \u201ew g\u00f3r\u0119&#8221;, jak pokazano poni\u017cej.<\/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>Uruchom polecenie migrate, kt\u00f3re utworzy tabel\u0119 \u201ecustomers&#8221; w Twojej bazie danych.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Nast\u0119pnie utw\u00f3rz model \u201eKlient&#8221;, kt\u00f3ry mapuje si\u0119 do tabeli \u201eklienci&#8221;. Pocz\u0105wszy od Laravel 8.x Twoje modele b\u0119d\u0105 tworzone w katalogu 'App\/Models&#8217;. W tym samouczku zak\u0142adam, \u017ce u\u017cywasz Laravel 8.x. W starszej wersji Laravela musisz dostosowa\u0107 \u015bcie\u017ck\u0119 modelu.<\/p>\n<pre><code>php artisan make:model Customer<\/code><\/pre>\n<h3>Rozsiewanie bazy danych w Laravel<\/h3>\n<p>Seeding bazy danych w Laravelu wymaga wykonania kilku krok\u00f3w, takich jak napisanie seeder\u00f3w, utworzenie fabryki modeli i uruchomienie seeder\u00f3w. Zr\u00f3bmy to jeden po drugim.<\/p>\n<h4>Pisanie siewc\u00f3w<\/h4>\n<p>Je\u015bli spojrzysz na system plik\u00f3w Laravel, zauwa\u017cysz katalog <code>database\/seeders<\/code>. Wszystkie klasy seed zostan\u0105 umieszczone w tym katalogu. Klasa pocz\u0105tkowa ma <code>run<\/code>metod\u0119, z kt\u00f3rej mo\u017cna wstawi\u0107 dane do tabeli.<\/p>\n<p>Utw\u00f3rz klas\u0119 seed CustomerSeeder za pomoc\u0105 polecenia:<\/p>\n<pre><code>php artisan make:seeder CustomerSeeder<\/code><\/pre>\n<p>Po wykonaniu tego polecenia powiniene\u015b zobaczy\u0107 <code>CustomerSeeder.php<\/code>plik utworzony w <code>database\/seeders<\/code>. Otw\u00f3rz ten plik i do <code>run<\/code>funkcji dodaj poni\u017cszy kod.<\/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>Tu dzwoni\u0119 do Fabryki Klienta, kt\u00f3r\u0105 stworzymy w nast\u0119pnym kroku. Zauwa\u017c, \u017ce przekaza\u0142em warto\u015b\u0107 50 do metody 'count&#8217;. Oznacza to, \u017ce w tabeli \u201eklienci&#8221; nale\u017cy umie\u015bci\u0107 50 wierszy. Dostosuj t\u0119 warto\u015b\u0107, jak chcesz.<\/p>\n<h4>Tworzenie fabryk<\/h4>\n<p>Kod, kt\u00f3ry napisa\u0142em, <code>CustomerSeeder<\/code>b\u0119dzie szuka\u0142 fabryki, aby uzyska\u0107 dane testowe. Oznacza to, \u017ce musimy stworzy\u0107 modelow\u0105 fabryk\u0119. Nadaj\u0119 nazw\u0119 fabryce jako CustomerFactory. Uruchom polecenie, aby wygenerowa\u0107 fabryk\u0119 modeli.<\/p>\n<pre><code>php artisan make:factory CustomerFactory --model=Customer<\/code><\/pre>\n<p>To polecenie utworzy <code>CustomerFactory.php<\/code>wewn\u0105trz <code>database\/factories<\/code>katalogu. Otw\u00f3rz ten plik i do metody definicji wygeneruj dane testowe w nast\u0119puj\u0105cy spos\u00f3b.<\/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>Powy\u017csza tablica zwraca losowo wybran\u0105 nazw\u0119, adres e-mail i tekst biografii.<\/p>\n<h4>Siewniki biegaj\u0105ce<\/h4>\n<p>Wszyscy ustawiamy si\u0119 z siewnikiem i fabryk\u0105. Teraz uruchom nasz siewnik za pomoc\u0105 poni\u017cszego polecenia.<\/p>\n<pre><code>php artisan db:seed --class=CustomerSeeder<\/code><\/pre>\n<p>Sprawd\u017a tabel\u0119 \u201eklienci&#8221; i powinna zawiera\u0107 50 fikcyjnych wpis\u00f3w.<\/p>\n<p>Powy\u017csze polecenie uruchamia pojedynczy seeder, kt\u00f3ry przekazali\u015bmy jawnie. Za\u0142\u00f3\u017cmy, \u017ce chcesz utworzy\u0107 wiele seeder\u00f3w i uruchomi\u0107 je wszystkie za pomoc\u0105 jednego polecenia. W takich przypadkach powiniene\u015b zadzwoni\u0107 do seeder\u00f3w z tego, <code>DatabaseSeeder<\/code>kt\u00f3ry znajduje si\u0119 w tym samym katalogu <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>U\u017cytkownik mo\u017ce utworzy\u0107 dowoln\u0105 liczb\u0119 seeder\u00f3w zgodnie ze swoimi wymaganiami i wywo\u0142a\u0107 je z tej <code>run<\/code>metody.<\/p>\n<p>Na koniec uruchom seedery za pomoc\u0105 poni\u017cszego polecenia.<\/p>\n<pre><code>php artisan db:seed<\/code><\/pre>\n<p>Wywo\u0142a wszystkie seedery z <code>run<\/code>metody i wykona j\u0105.<\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz temat seedowania bazy danych w Laravel. Chcia\u0142bym us\u0142ysze\u0107 wasze przemy\u015blenia i sugestie w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/integracja-paypal-payments-pro-w-laravel\/\" title=\"Integracja PayPal Payments Pro w Laravel\">Integracja PayPal Payments Pro w Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-stworzyc-honeypota-do-walki-ze-spamem-formularzy-w-laravel\/\" title=\"Utw\u00f3rz Honeypot do walki ze spamem formularzy w Laravel\">Utw\u00f3rz Honeypot do walki ze spamem formularzy w Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przewodnik-po-dodaniu-google-recaptcha-v3-do-twojej-witryny-laravel\/\" title=\"Dodawanie Google reCAPTCHA v3 do Twojej witryny Laravel\">Dodawanie Google reCAPTCHA v3 do Twojej witryny Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Szukasz seedowania bazy danych w Laravel? W tym artykule poka\u017c\u0119 jak stworzy\u0107 i uruchomi\u0107 seeding w aplikacji Laravel. Biblioteka fake<\/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":[501],"tags":[847],"class_list":["post-28922","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=28922"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28922\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21644"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=28922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=28922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=28922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}