[英]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.