{"id":25432,"date":"2021-06-07T12:17:00","date_gmt":"2021-06-07T09:17:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25432"},"modified":"2021-10-18T02:33:32","modified_gmt":"2021-10-17T23:33:32","slug":"so-verwenden-sie-die-funktion-fuer-mehrere-datenbankverbindungen-von-laravel-auf-einer-website","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-verwenden-sie-die-funktion-fuer-mehrere-datenbankverbindungen-von-laravel-auf-einer-website\/","title":{"rendered":"So verwenden Sie die Funktion f\u00fcr mehrere Datenbankverbindungen von Laravel auf einer Website"},"content":{"rendered":"<p>M\u00f6chten Sie mehrere Datenbanken mit Ihrer Laravel-Anwendung verbinden? Manchmal k\u00f6nnen Sie auf eine Situation sto\u00dfen, in der Sie mit mehr als einer Datenbank umgehen m\u00fcssen. In diesem Artikel untersuchen wir, wie Sie mehrere Datenbanken in der Laravel-Anwendung verbinden und verwenden. Laravel bietet im Kern selbst Unterst\u00fctzung f\u00fcr mehrere Datenbankverbindungen.<\/p>\n<p>Normalerweise ben\u00f6tigen wir eine einzige Datenbank f\u00fcr eine Website. Es kann jedoch sein, dass Sie einige Daten zu Ihrer Anwendung in einer anderen Datenbank speichern m\u00fcssen. Ich arbeitete an einem E-Commerce-Projekt, bei dem wir Bestelldetails an eine separate Datenbank senden wollten. In Ihrem Fall k\u00f6nnen die Anforderungen unterschiedlich sein.<\/p>\n<p>Lassen Sie uns jedoch einen Blick auf die Verbindung und Verwendung mehrerer Datenbanken mit Laravel werfen.<\/p>\n<h3>F\u00fcgen Sie mehrere Datenbankverbindungen in Laravel hinzu<\/h3>\n<p>Wie gesagt, mit Laravel k\u00f6nnen Sie mehrere Datenbanken verbinden. Wir k\u00f6nnen eine andere Datenbankplattform wie SQLite, MySQL, SQLSRV mit Laravel verwenden. F\u00fcr dieses Tutorial werde ich eine andere MySQL-Instanz einer separaten Datenbank verwenden. Mit anderen Worten, wir werden es mit einer separaten MySQL-Datenbank als zus\u00e4tzlichen Speicher zu tun haben.<\/p>\n<p>Laravel speichert eine Datenbankverbindung in der <code>config\/database.php<\/code>Datei. Um eine weitere MySQL-Verbindung hinzuzuf\u00fcgen, m\u00fcssen wir diese Datei \u00e4ndern.<\/p>\n<p>F\u00fcgen wir eine weitere Verbindung hinzu, n\u00e4mlich &#8218;mysql2&#8216;. Sie k\u00f6nnen dieser Verbindung einen beliebigen anderen Namen geben. Stellen Sie nur sicher, dass Sie bei der Interaktion mit der Datenbank denselben Namen verwenden.<\/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>Im obigen Code ist die Verbindung &#8218;mysql&#8216; die Standardverbindung. Ich habe eine neue Verbindung &#8218;mysql2&#8216; mit verschiedenen Konstanten hinzugef\u00fcgt. Hier habe ich die Konstanten als DB_DATABASE_2, DB_USERNAME_2, DB_PASSWORD_2 usw. \u00fcbergeben. Wenn Ihre Datenbank auf einem anderen Server gehostet wird, sollten Sie auch die Schl\u00fcssel von DB_HOST_2 und DB_PORT_2 \u00e4ndern. Ich gehe davon aus, dass sich beide Datenbanken auf demselben Server befinden. Ich \u00e4ndere die Werte dieser Konstanten also nicht.<\/p>\n<p>Laravel erh\u00e4lt die Werte dieser Konstanten mit der <code>env()<\/code>Methode. Dies bedeutet, dass wir andere Datenbankdetails in einer &#8218;.env&#8216;-Datei wie unten beschrieben hinzuf\u00fcgen sollten.<\/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>Nachdem wir die obigen Schritte ausgef\u00fchrt haben, sind wir mit der Verbindung einer anderen Datenbank in Laravel fertig. Das n\u00e4chste Zeug ist die Interaktion mit dieser Datenbank.<\/p>\n<h3>F\u00fchren Sie die Migration auf einer anderen Datenbank in Laravel aus<\/h3>\n<p>Wenn es um Laravel geht, sollten wir immer Tabellen in der Datenbank mit Migrationen erstellen. Nehmen wir an, wir m\u00f6chten eine &#8218;Produkte&#8216;-Tabelle in unserer separaten Datenbank erstellen. F\u00fchren Sie den folgenden Befehl aus, der eine Migrationsdatei erstellt.<\/p>\n<pre><code>php artisan make:migration create_products_table<\/code><\/pre>\n<p>Es wird eine neue Datei im Verzeichnis &#8218;database\/migrations&#8216; erstellt. \u00d6ffnen Sie die Datei im Editor und \u00fcbergeben Sie die neu erstellte Verbindung wie unten gezeigt.<\/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>Ich habe der <code>connection<\/code>Methode der <code>Schema<\/code>Klasse den Wert &#8218;mysql2&#8216; \u00fcbergeben. Das hei\u00dft, wenn Sie den Migrationsbefehl ausf\u00fchren, f\u00fchrt dieser Code den obigen Code in der anderen Datenbank aus, deren Verbindungszeichenfolge wir \u00fcbergeben haben.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Nachdem Sie den obigen Befehl ausgef\u00fchrt haben, gehen Sie zu Ihrer zweiten Datenbank. Es sollte jetzt eine &#8218;Produkte&#8216;-Tabelle haben.<\/p>\n<h3>Abfragen in einer anderen Datenbank ausf\u00fchren<\/h3>\n<p>In Laravel k\u00f6nnen Sie entweder \u00fcber einen <a href=\"https:\/\/laravel.com\/docs\/master\/queries\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Query Builder<\/a> oder mit dem <a href=\"https:\/\/laravel.com\/docs\/master\/eloquent\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Eloquent ORM<\/a> mit der Datenbank interagieren .<\/p>\n<p><code>DB<\/code>Fassade bietet eine Methode namens connection, die verwendet wird, um Abfragen auf einer anderen Datenbank auszuf\u00fchren. Lassen Sie uns mit einem Abfragegenerator eine Abfrage f\u00fcr die Verbindung &#8218;mysql2&#8216; schreiben.<\/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>Der Query Builder f\u00fchrt die obigen Abfragen automatisch in der anderen Datenbank aus, indem er einen Verweis auf die Verbindungsmethode verwendet.<\/p>\n<p>Bei Eloquent gibt es 2 M\u00f6glichkeiten, separate Datenbanken zu verbinden. Die erste M\u00f6glichkeit besteht darin, die <code>$connection<\/code>Variable in Ihrer Model-Klasse zu verwenden.<\/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>Jetzt behandelt das Modell &#8218;Produkte&#8216; nur die zweite Datenbank.<\/p>\n<p>Bei der zweiten Option k\u00f6nnen Sie bei Bedarf im Handumdrehen eine Verbindung aufbauen. Auf diese Weise k\u00f6nnen Sie mit mehreren Datenbanken aus einem einzigen Modell interagieren.<\/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>Hier habe ich die Verbindungslaufzeit mit <code>setConnection()<\/code>Methode eingestellt.<\/p>\n<p>Das ist es! Ich hoffe, Sie verstehen, wie Sie mehrere Datenbanken in der Laravel-Anwendung verbinden. Bitte teilen Sie Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten mit.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/erstellen-sie-eine-mehrsprachige-website-in-php-mit-dem-laravel-framework\/\" title=\"Erstellen Sie eine mehrsprachige Website in PHP mit dem Laravel Framework\">Erstellen Sie eine mehrsprachige Website in PHP mit dem Laravel Framework<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-laden-und-komprimieren-sie-bilder-in-laravel\/\" title=\"Eine Anleitung zum Hochladen und Komprimieren von Bildern in Laravel\">Eine Anleitung zum Hochladen und Komprimieren von Bildern in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-installieren-und-verwenden-sie-ckeditor-in-laravel\/\" title=\"So installieren und verwenden Sie CKEditor in Laravel\">So installieren und verwenden Sie CKEditor in Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie wissen, wie Sie mehrere Datenbankverbindungen in Laravel konfigurieren? In diesem Artikel zeigen wir Ihnen Schritt f\u00fcr Schritt, wie Sie hinzuf\u00fcgen<\/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":[496],"tags":[845],"class_list":["post-25432","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25432"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25432\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21643"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}