{"id":29236,"date":"2021-06-07T12:17:00","date_gmt":"2021-06-07T09:17:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29236"},"modified":"2021-10-17T04:23:57","modified_gmt":"2021-10-17T01:23:57","slug":"hur-man-anvander-laravel-multiple-database-connections-funktionen-pa-en-webbplats","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-anvander-laravel-multiple-database-connections-funktionen-pa-en-webbplats\/","title":{"rendered":"Hur man anv\u00e4nder Laravel Multiple Database Connections-funktionen p\u00e5 en webbplats"},"content":{"rendered":"<p>Vill du ansluta flera databaser till din Laravel-applikation? Ibland kan du st\u00f6ta p\u00e5 en situation d\u00e4r du beh\u00f6ver hantera mer \u00e4n en databas. I den h\u00e4r artikeln studerar vi hur man ansluter och anv\u00e4nder flera databaser i Laravel-applikationen. Laravel tillhandah\u00e5ller st\u00f6d f\u00f6r flera databasanslutningar i sj\u00e4lva k\u00e4rnan.<\/p>\n<p>Vanligtvis beh\u00f6ver vi en enda databas f\u00f6r en webbplats. Men det kan vara m\u00f6jligt att du m\u00e5ste lagra data om din applikation i en annan databas. Jag arbetade med ett e-handelsprojekt d\u00e4r vi ville skicka orderinformation till en separat databas. I ditt fall kan kraven vara olika.<\/p>\n<p>Med detta sagt, l\u00e5t oss ta en titt p\u00e5 att ansluta och anv\u00e4nda flera databaser med Laravel.<\/p>\n<h3>L\u00e4gg till flera databasanslutningar i Laravel<\/h3>\n<p>Som jag sa till\u00e5ter Laravel dig att ansluta flera databaser. Vi kan anv\u00e4nda en annan databasplattform som SQLite, MySQL, SQLSRV med Laravel. F\u00f6r den h\u00e4r guiden ska jag anv\u00e4nda en annan MySQL-instans av en separat databas. F\u00f6r ord kommer vi att hantera en separat MySQL-databas som extra lagring.<\/p>\n<p>Laravel lagrar en databasanslutning i <code>config\/database.php<\/code>filen. F\u00f6r att l\u00e4gga till ytterligare en anslutning av MySQL m\u00e5ste vi \u00e4ndra den h\u00e4r filen.<\/p>\n<p>L\u00e5t oss l\u00e4gga till en annan anslutning, n\u00e4mligen &#8217;mysql2&#8217;. Du kan ge vilket annat namn som helst till denna anslutning. Se bara till att du kommer att anv\u00e4nda samma namn n\u00e4r du interagerar med databasen.<\/p>\n<p><strong>config \/ database.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>I ovanst\u00e5ende kod \u00e4r anslutningen &#8217;mysql&#8217; standard. Jag lade till en ny anslutning &#8217;mysql2&#8217; med olika konstanter. H\u00e4r passerade jag konstanterna som DB_DATABASE_2, DB_USERNAME_2, DB_PASSWORD_2, etc. Om din databas \u00e4r v\u00e4rd p\u00e5 en annan server b\u00f6r du ocks\u00e5 \u00e4ndra nycklarna till DB_HOST_2 och DB_PORT_2. Jag antar att b\u00e5da databaserna finns p\u00e5 samma server. S\u00e5 jag \u00e4ndrar inte v\u00e4rdena p\u00e5 dessa konstanter.<\/p>\n<p>Laravel f\u00e5r v\u00e4rdena f\u00f6r dessa konstanter med <code>env()<\/code>metoden. Det betyder att vi b\u00f6r l\u00e4gga till andra databasuppgifter i en &#8217;.env&#8217; -fil enligt nedan.<\/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>Efter att ha utf\u00f6rt ovanst\u00e5ende steg \u00e4r vi klara med att ansluta en annan databas i Laravel. N\u00e4sta grej interagerar med denna databas.<\/p>\n<h3>K\u00f6r migrering p\u00e5 en annan databas i Laravel<\/h3>\n<p>N\u00e4r det g\u00e4ller Laravel ska vi alltid skapa tabeller i databasen med hj\u00e4lp av Migrations. L\u00e5t oss s\u00e4ga att vi vill skapa en &quot;produkttabell&quot; i v\u00e5r separata databas. K\u00f6r kommandot nedan som skapar en migreringsfil.<\/p>\n<pre><code>php artisan make:migration create_products_table<\/code><\/pre>\n<p>Det skapar en ny fil i katalogen &#8217;databas \/ migrering&#8217;. \u00d6ppna filen i redigeraren och skicka den nyskapade anslutningen enligt nedan.<\/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>Jag har skickat v\u00e4rdet &#8217;mysql2&#8217; till klassens <code>connection<\/code>metod <code>Schema<\/code>. Det betyder att n\u00e4r du k\u00f6r migrera-kommandot, k\u00f6r den h\u00e4r koden ovanst\u00e5ende kod i den andra databasen vilken anslutningsstr\u00e4ng vi har skickat.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Efter att ha k\u00f6rt ovanst\u00e5ende kommando, g\u00e5 \u00f6ver till din andra databas. Den borde nu ha en &quot;produkt&quot; -tabell.<\/p>\n<h3>K\u00f6r fr\u00e5gor p\u00e5 en annan databas<\/h3>\n<p>I Laravel kan du interagera med databasen antingen via en <a href=\"https:\/\/laravel.com\/docs\/master\/queries\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Query Builder<\/a> eller med <a href=\"https:\/\/laravel.com\/docs\/master\/eloquent\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Eloquent ORM<\/a>.<\/p>\n<p><code>DB<\/code>fasad ger en metod som kallas anslutning som anv\u00e4nds f\u00f6r att k\u00f6ra fr\u00e5gor i en annan databas. L\u00e5t oss skriva en fr\u00e5ga om anslutningen &#8217;mysql2&#8217; med hj\u00e4lp av en Query Builder.<\/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 k\u00f6r automatiskt ovanst\u00e5ende fr\u00e5gor i den andra databasen genom att h\u00e4nvisa till anslutningsmetoden.<\/p>\n<p>N\u00e4r det g\u00e4ller Eloquent finns det tv\u00e5 s\u00e4tt att ansluta separata databaser. Det f\u00f6rsta s\u00e4ttet \u00e4r att anv\u00e4nda <code>$connection<\/code>variabeln i din modellklass.<\/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>Nu kommer &#8217;Produkter&#8217; -modellen endast att hantera den andra databasen.<\/p>\n<p>I det andra alternativet kan du skapa en anslutning i farten n\u00e4r det beh\u00f6vs. P\u00e5 detta s\u00e4tt kan du interagera med flera databaser fr\u00e5n en enda modell.<\/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>H\u00e4r har jag st\u00e4llt in anslutningens k\u00f6rtid med <code>setConnection()<\/code>metoden.<\/p>\n<p>Det \u00e4r allt! Jag hoppas att du f\u00f6rst\u00e5r hur man ansluter flera databaser i Laravel-applikationen. Dela 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\/skapa-flersprakig-webbplats-i-php-med-hjalp-av-laravel-framework\/\" title=\"Skapa flerspr\u00e5kig webbplats i PHP med hj\u00e4lp av Laravel Framework\">Skapa flerspr\u00e5kig webbplats i PHP med hj\u00e4lp av Laravel Framework<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-laddar-upp-och-komprimerar-bilder-i-laravel\/\" title=\"En guide f\u00f6r att ladda upp och komprimera bilder i Laravel\">En guide f\u00f6r att ladda upp och komprimera bilder i Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-installerar-och-anvander-ckeditor-i-laravel\/\" title=\"Hur man installerar och anv\u00e4nder CKEditor i Laravel\">Hur man installerar och anv\u00e4nder CKEditor i Laravel<\/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>Vill du veta hur du konfigurerar flera databasanslutningar i laravel? I den h\u00e4r artikeln visar vi dig steg f\u00f6r steg guide om hur du l\u00e4gger till<\/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":[503],"tags":[850],"class_list":["post-29236","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\/29236","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=29236"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/29236\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=29236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=29236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=29236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}