2016-11-28 3 views
1

Я использую laravel 5. Мне нужно получить некоторые данные из удаленной базы данных MySQL.Удаленное подключение базы данных MySQL Laravel 5 не работает

Я уже установил соединение с базой данных в config/database.php. Вот как это выглядит:

'connections' => [ 

    'mysql' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => env('DB_DATABASE', 'forge'), 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ], 

    'remotemysql' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', '************'), 
     'database' => env('DB_DATABASE', 'osys'), 
     'username' => env('DB_USERNAME', 'Syn'), 
     'password' => env('DB_PASSWORD', '****************'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ], 
], 

Информационный соединение правильно, я уже проверил это, и я в состоянии подключиться к удаленной базе данных.

Чтобы проверить это, я только что подключил соединение с базой данных и данные в своем контроллере, чтобы отправить его на просмотр, чтобы проверить, все ли работает нормально. Это мой контроллер:

... 
use DB; 
... 

public function item() 
{ 

    $items = DB::connection('remotemysql') 
    ->table('ip_products') 
    ->get(); 
    return view('admin.item', compact('items')); 
} 

и это мое мнение:

... 
<tbody>  
@foreach ($items as $item) 
    <tr> 
     <td>{{$item->id}}</td> 
    </tr> 
@endforeach 
</tbody> 
... 

Когда я пытаюсь загрузить мой взгляд я получаю сообщение об ошибке:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dvs.ip_products' >doesn't exist (SQL: select * from ip_products)

ошибка показывает мне, что Laravel пытается получить таблицу из базы данных dvs (которая является основной базой данных сайта). Поэтому он не использует соединение «remotemysql». Если он не смог подключиться к удаленной базе данных, у него была бы ошибка соединения, но я думаю, что он вообще не использует удаленное соединение.

Что я могу сделать, чтобы исправить эту проблему?

+0

взгляд на '.env' файл в корневой папке вашего приложения (: – num8er

+0

вещи, которые в файл .env всегда будет перезаписана конфигурации – Taacoo

+0

@Taacoo Так что, если я удалить. учетные данные из моего .env и просто поместить его в базу данных.php, он должен работать? Я не собираюсь его обманывать?: P –

ответ

1

Как Вы можете видеть от ошибок:

Table 'dvs.ip_products' >doesn't exist

где dvs это имя базы данных.

так в соответствии с Вашими конфигурационными файлами:

'remotemysql' => [ 
    'driver' => 'mysql', 
    'host'  => env('DB_HOST', '************'), 
    'database' => env('DB_DATABASE', 'osys'), 
    'username' => env('DB_USERNAME', 'Syn'), 
    'password' => env('DB_PASSWORD', '****************'), 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
    'strict' => false, 
], 

env() метод имеет 2 арг: $key, $default

так выглядит первый в .env файл, чтобы найти $key в You случае DB_HOST, DB_DATABASE... и если это не определено будет использовать $default, который вы определяете как второй аргумент.

Вы можете прочитать об этом here

+1

Спасибо, что он работает сейчас :) –

Смежные вопросы