簡體   English   中英

如何從Laravel Homestead連接到遠程數據庫?

[英]How to connect to remote database from Laravel Homestead?

我目前正在Windows 10上使用Homestead進行Laravel 5.5項目的工作。情況是:我的應用程序需要從位於物理計算機上的外部數據庫讀取數據(只讀,不寫入)。 因為在生產環境中,此應用程序具有自己的數據庫,還需要從遠程數據庫中獲取數據。 該外部數據庫使用XAMPP托管在localhost上。

我搜索了Internet,但沒有任何適用於我的情況的答案。 我現在很困惑。 我是編程的新手,所以任何人都可以給我一些有關如何配置以實現此目標的提示嗎? 非常感謝!


[更新]關於我正在使用的這個應用程序:這是一個網絡應用程序,它使圖書管理員和學術支持人員可以記錄每種服務的詳細信息,例如哪個學生來詢問如何進行引用等。

它只會在我的學校內運行,有點像內部應用程序嗎? 無論如何,沒有人可以在學校外訪問它,它僅供教職員工使用,不適合學生使用。 這個應用程式擁有自己的本地資料庫來儲存員工帳戶和服務詳情,而且如上所述,它需要從學校資料庫中獲取學生信息,現在在開發過程中,我在物理機上建立了數據庫學校數據庫,並在其中轉儲一些虛擬數據。

然后,我使用命令行創建了一個名為Student的新模型。 當我嘗試使用php tinker從外部數據庫讀取數據時,它顯示如下錯誤:

>>> App\Modles\Student::all()
PHP Fatal error:  Class 'App/Modles/Student' not found in Psy Shell code on line 1

下面,我包括了Student.php,.env和database.php文件

App / Models / Student.php

 <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    protected $connection = 'mysql_campus';
}

.env:

    ......
    //Local Database
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1

    DB_DATABASE=w2_support
    DB_USERNAME=homestead
    DB_PASSWORD=secret

    //External Database
    DB_CONNECTION=mysql_campus
    DB_EXT_HOST=10.0.2.2

    DB_EXT_DATABASE=campus
    DB_EXT_USERNAME=root
    DB_EXT_PASSWORD=

    BROADCAST_DRIVER=log
    CACHE_DRIVER=file
    SESSION_DRIVER=file
    QUEUE_DRIVER=sync
    ......

database.php:

    ......
    'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
    ],

    //Local Database
    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    //External Database
    'mysql_campus' => [
        'driver' => 'mysql',
        'host' => env('DB_EXT_HOST', '10.0.2.2'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_EXT_DATABASE', 'forge'),
        'username' => env('DB_EXT_USERNAME', 'forge'),
        'password' => env('DB_EXT_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],
    ......

您應該可以從家中連接到10.0.2.2來訪問主機。 這是主機的標准回送地址。 有點像您如何連接到127.0.0.1或本地數據庫的localhost。

我的laravel版本是5.1。

您可以編輯.env文件,並將DB_HOST值替換為遠程數據庫主機。

另一種方法是編輯config / database.php文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM