Как подключиться к удаленной базе данных от Laravel Homestead? - PullRequest
0 голосов
/ 09 ноября 2018

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

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


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

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

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

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

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

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

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

0 голосов
/ 09 ноября 2018

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

...