{"id":25971,"date":"2021-06-07T11:53:00","date_gmt":"2021-06-07T08:53:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25971"},"modified":"2021-10-17T18:26:20","modified_gmt":"2021-10-17T15:26:20","slug":"laraveli-mitme-andmebaasiuhenduse-funktsiooni-kasutamine-veebisaidil","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/laraveli-mitme-andmebaasiuhenduse-funktsiooni-kasutamine-veebisaidil\/","title":{"rendered":"Laraveli mitme andmebaasi\u00fchenduse funktsiooni kasutamine veebisaidil"},"content":{"rendered":"<p>Kas soovite oma Laraveli rakendusega \u00fchendada mitu andmebaasi? M\u00f5nikord v\u00f5ite kohata olukorda, kus peate tegelema rohkem kui \u00fche andmebaasiga. Selles artiklis uurime, kuidas \u00fchendada ja kasutada mitut andmebaasi Laraveli rakenduses. Laravel pakub tuge mitmele andmebaasi\u00fchendusele oma tuumas.<\/p>\n<p>Tavaliselt vajame \u00fche veebisaidi jaoks \u00fchte andmebaasi. Kuid v\u00f5ib olla, et peate oma rakenduse kohta m\u00f5ned andmed salvestama teise andmebaasi. T\u00f6\u00f6tasin e-kaubanduse projektiga, kus soovisime tellimuse \u00fcksikasjad saata eraldi andmebaasi. Teie puhul v\u00f5ivad n\u00f5uded olla erinevad.<\/p>\n<p>Seda \u00f6eldes vaatame \u00fcle mitme andmebaasi \u00fchendamise ja kasutamise Laraveliga.<\/p>\n<h3>Lisage Laravelisse mitu andmebaasi\u00fchendust<\/h3>\n<p>Nagu ma \u00fctlesin, v\u00f5imaldab Laravel teil \u00fchendada mitu andmebaasi. Saame Laraveliga kasutada erinevat andmebaasiplatvormi nagu SQLite, MySQL, SQLSRV. Selle \u00f5petuse jaoks kavatsen kasutada veel \u00fchte eraldi andmebaasi MySQL-i eksemplari. S\u00f5nade j\u00e4rjekorras tegeleme eraldi MySQL-i andmebaasiga t\u00e4iendava salvestusruumina.<\/p>\n<p>Laravel salvestab <code>config\/database.php<\/code>faili andmebaasi\u00fchenduse. MySQL-i teise \u00fchenduse lisamiseks peame seda faili muutma.<\/p>\n<p>Lisame veel \u00fche \u00fchenduse nimega &#8216;mysql2&#8217;. Sellele \u00fchendusele saate anda mis tahes muu nime. Veenduge, et kasutate andmebaasiga suheldes sama nime.<\/p>\n<p><strong>config \/ andmebaas.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nuse IlluminateSupportStr;\n\u00a0\nreturn [\n\u00a0\u00a0\u00a0\u00a0...\n\u00a0\n\u00a0\u00a0\u00a0\u00a0'connections' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0...\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'mysql' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'mysql',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'url' =&gt; env('DATABASE_URL'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; env('DB_HOST', '127.0.0.1'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'port' =&gt; env('DB_PORT', '3306'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'database' =&gt; env('DB_DATABASE', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; env('DB_USERNAME', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; env('DB_PASSWORD', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'unix_socket' =&gt; env('DB_SOCKET', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'charset' =&gt; 'utf8mb4',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'collation' =&gt; 'utf8mb4_unicode_ci',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix' =&gt; '',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix_indexes' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'strict' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'engine' =&gt; null,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'options' =&gt; extension_loaded('pdo_mysql')? array_filter([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PDO::MYSQL_ATTR_SSL_CA =&gt; env('MYSQL_ATTR_SSL_CA'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]): [],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'mysql2' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'mysql',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'url' =&gt; env('DATABASE_URL'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'host' =&gt; env('DB_HOST_2', '127.0.0.1'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'port' =&gt; env('DB_PORT_2', '3306'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'database' =&gt; env('DB_DATABASE_2', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; env('DB_USERNAME_2', 'forge'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; env('DB_PASSWORD_2', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'unix_socket' =&gt; env('DB_SOCKET', ''),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'charset' =&gt; 'utf8mb4',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'collation' =&gt; 'utf8mb4_unicode_ci',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix' =&gt; '',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'prefix_indexes' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'strict' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'engine' =&gt; null,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'options' =&gt; extension_loaded('pdo_mysql')? array_filter([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0PDO::MYSQL_ATTR_SSL_CA =&gt; env('MYSQL_ATTR_SSL_CA'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]): [],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0]<\/code><\/pre>\n<p>\u00dclaltoodud koodis on \u00fchendus &#8216;mysql&#8217; vaikekood. Lisasin uue konstantidega uue \u00fchenduse &#8216;mysql2&#8217;. Siin l\u00e4bisin konstandid nimedega DB_DATABASE_2, DB_USERNAME_2, DB_PASSWORD_2 jne. Kui teie andmebaasi hostitakse m\u00f5nes teises serveris, peaksite muutma ka DB_HOST_2 ja DB_PORT_2 v\u00f5tmeid. Eeldan, et m\u00f5lemad andmebaasid asuvad \u00fches serveris. Niisiis, ma ei muuda nende konstantide v\u00e4\u00e4rtusi.<\/p>\n<p>Laravel saab <code>env()<\/code>meetodi abil nende konstantide v\u00e4\u00e4rtused. See t\u00e4hendab, et peaksime lisama muud andmebaasi \u00fcksikasjad faili .env, nagu allpool.<\/p>\n<pre><code>DB_HOST_2=127.0.0.1\nDB_PORT_2=3306\nDB_DATABASE_2=\nDB_USERNAME_2=\nDB_PASSWORD_2=<\/code><\/pre>\n<p>P\u00e4rast \u00fclaltoodud toimingute tegemist oleme teise andmebaasi \u00fchendamisega Laravelis. J\u00e4rgmine kraam suhtleb selle andmebaasiga.<\/p>\n<h3>K\u00e4ivitage migreerimine Laraveli teises andmebaasis<\/h3>\n<p>Laraveli osas peaksime alati Migrations abil andmebaasi tabeleid looma. Oletame, et tahame oma eraldi andmebaasi luua tabeli \u201etooted&quot;. K\u00e4ivitage j\u00e4rgmine k\u00e4sk, mis loob migreerimisfaili.<\/p>\n<pre><code>php artisan make:migration create_products_table<\/code><\/pre>\n<p>See loob kataloogi &#8216;andmebaas \/ migreerimised&#8217; uue faili. Avage fail redaktorisse ja edastage vastloodud \u00fchendus, nagu allpool n\u00e4idatud.<\/p>\n<pre><code>&lt;?php\n\u00a0\nuse IlluminateDatabaseMigrationsMigration;\nuse IlluminateDatabaseSchemaBlueprint;\nuse IlluminateSupportFacadesSchema;\n\u00a0\nclass CreateProductsTable extends Migration\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Run the migrations.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function up()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Schema::connection('mysql2')-&gt;create('products', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;id();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Reverse the migrations.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function down()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Schema::connection('mysql2')-&gt;dropIfExists('products');\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Olen klassi <code>connection<\/code>meetodile edastanud v\u00e4\u00e4rtuse &#8216;mysql2&#8217; <code>Schema<\/code>. See t\u00e4hendab, et kui k\u00e4ivitate k\u00e4su migrate, k\u00e4ivitab see kood \u00fclaltoodud koodi teises andmebaasis, mille \u00fchenduse stringi oleme edastanud.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>P\u00e4rast \u00fclaltoodud k\u00e4su k\u00e4ivitamist minge oma teise andmebaasi. N\u00fc\u00fcd peaks sellel olema toodete tabel.<\/p>\n<h3>K\u00e4ivitage p\u00e4ringud teises andmebaasis<\/h3>\n<p>Laravelis saate andmebaasiga suhelda kas <a href=\"https:\/\/laravel.com\/docs\/master\/queries\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e4ringute koostaja kaudu<\/a> v\u00f5i kasutades <a href=\"https:\/\/laravel.com\/docs\/master\/eloquent\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00f5na\u00fchendit ORM<\/a>.<\/p>\n<p><code>DB<\/code>fassaad pakub meetodit nimega \u00fchendus, mida kasutatakse teises andmebaasis p\u00e4ringute k\u00e4ivitamiseks. Kirjutame p\u00e4ringu loomise abil p\u00e4ringu \u00fchendusele &#8216;mysql2&#8217;.<\/p>\n<pre><code>$products = DB::connection('mysql2')-&gt;select('SELECT * FROM products');\n$products = DB::connection('mysql2')-&gt;select('SELECT * FROM products where id = ?', [1]);<\/code><\/pre>\n<p>Query Builder t\u00e4idab \u00fclaltoodud p\u00e4ringud automaatselt teises andmebaasis, viidates \u00fchenduse meetodile.<\/p>\n<p>Mis puutub Eloquenti, siis on eraldi andmebaaside \u00fchendamiseks kaks v\u00f5imalust. Esimene v\u00f5imalus on kasutada <code>$connection<\/code>mudeli klassi muutujat.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppModels;\n\u00a0\nuse IlluminateDatabaseEloquentFactoriesHasFactory;\nuse IlluminateDatabaseEloquentModel;\n\u00a0\nclass Product extends Model\n{\n\u00a0\u00a0\u00a0\u00a0use HasFactory;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The connection name for the model.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var string\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $connection = 'mysql2'; \/\/pass the connection name here\n}<\/code><\/pre>\n<p>N\u00fc\u00fcd tegeleb mudel &quot;Tooted&quot; ainult teise andmebaasiga.<\/p>\n<p>Teise v\u00f5imalusena saate \u00fchenduse luua alati k\u00e4igu pealt. Nii saate \u00fchest mudelist suhelda mitme andmebaasiga.<\/p>\n<pre><code>&lt;?php\n...\nuse AppModelsProduct;\n\u00a0\nclass ProductController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$product = new Product;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$product-&gt;setConnection('mysql2');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_product = $product-&gt;find(1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0dd($arr_product);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Siin olen <code>setConnection()<\/code>meetodi abil \u00fchenduse k\u00e4itamise m\u00e4\u00e4ranud .<\/p>\n<p>See selleks! Loodan, et saate aru, kuidas Laraveli rakenduses \u00fchendada mitu andmebaasi. Palun jagage oma m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/looge-php-s-mitmekeelne-veebisait-kasutades-laraveli-raamistikku\/\" title=\"Looge Laraveli raamistiku abil PHP-s mitmekeelne veebisait\">Looge Laraveli raamistiku abil PHP-s mitmekeelne veebisait<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-pilte-laravelis-ules-laadida-ja-tihendada\/\" title=\"Juhend piltide \u00fcleslaadimiseks ja tihendamiseks Laravelis\">Juhend piltide \u00fcleslaadimiseks ja tihendamiseks Laravelis<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-ckeditorit-laravelis-installida-ja-kasutada\/\" title=\"Kuidas CKEditorit Laravelis installida ja kasutada\">Kuidas CKEditorit Laravelis installida ja kasutada<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kas soovite teada, kuidas konfigureerida laravelis mitu andmebaasi\u00fchendust? Selles artiklis n\u00e4itame teile j\u00e4rkj\u00e4rgulist juhendit lisamise kohta<\/p>\n","protected":false},"author":1,"featured_media":21643,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[498],"tags":[842],"class_list":["post-25971","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25971","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=25971"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25971\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=25971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=25971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=25971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}