Как подключиться к удаленной базе данных от Laravel Homestead?

В настоящее время я работаю над проектом Laravel 5.5 с использованием Homestead на Windows 10.
Ситуация такова: мое приложение должно считывать данные (только для чтения, без записи) из внешней базы данных, которая находится на моей физической машине. Потому что в производственной среде это приложение имеет собственную базу данных, а также нуждается в извлечении данных из удаленной базы данных. Эта внешняя база данных размещается на локальном хосте с использованием XAMPP.

Я искал в Интернете и не получил никакого ответа, который относится к моему сценарию. Я сейчас совершенно сбит с толку. Я новичок в программировании, поэтому кто-нибудь может дать мне несколько советов о том, как мне это настроить? Спасибо вам большое!


[Обновить] Об этом приложении я работаю над:
Это веб-приложение, которое позволяет библиотекарям и сотрудникам академической поддержки записывать детали каждой услуги, например, какой студент пришел, чтобы спросить о том, как делать ссылки и т.д.

Он будет работать только в моей школе, вроде внутреннего приложения? В любом случае, никто не может получить к нему доступ за пределами школы, и он предназначен только для сотрудников, а не для учащихся.
Это приложение имеет свою собственную локальную базу данных для хранения учетных записей сотрудников и служебных данных, а также, как я уже упоминал выше, оно должно извлекать информацию о студентах из школьной базы данных, а сейчас во время разработки я настраивал базу данных на своем физическом компьютере в качестве Школьная база данных, и добавьте туда несколько фиктивных данных.

Затем я создал новую модель под названием 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 / Модели / 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,
],
......

-1

Решение

Вы должны иметь возможность подключиться к 10.0.2.2 из вашей усадьбы, чтобы получить доступ к хост-машине. Это стандартный адрес обратной связи для хост-машины. Это похоже на подключение к 127.0.0.1 или localhost для локальной базы данных.

1

Другие решения

Моя версия Laravel — 5.1.

Вы можете отредактировать файл .env и заменить значение DB_HOST удаленным хостом базы данных.

Другой способ — отредактировать файл config / database.php.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector