2015-05-29 1 views
0

Я новичок в системе Laravel и наблюдаю за Laracasts и читаю документы, чтобы узнать систему. Пока все хорошо, но теперь я иду по пути доступа к второй базе данных, и у меня проблемы. По какой-то причине я могу извлекать данные из базы данных с помощью метода where(), но он ломается (страница не загружается, ошибки не отображаются, файл журнала пуст), когда я использую методы select() или all(), и я не могу понять Зачем.Laravel 5: `select()` и `all()` методы не работают, `where` метод делает. Что я делаю не так?

Вот моя модель:

class SharedAircraft extends Model { 

protected $fillable = [ 
]; // This is done to block any possible entries for now. Find a better solution before production. 

protected $connection = 'pams_shared'; // Point to the shared database 

protected $table = 'shared_aircraft'; // This overrides the Laravel default to look for the plural version of the class. 

}

Вот мой контроллер, который ломается, тот же результат, если я использую all():

public function create() 
{ 
    $aircraft = SharedAircraft::select('aircraft_mfr','aircraft_model')->get(); 
    return view('aircraft.create', compact('aircraft')); 
} 

Вот мой контроллер, который работает:

public function create() 
{ 
    $aircraft = SharedAircraft::where('aircraft_mfr','Cessna')->get(); 
    return view('aircraft.create', compact('aircraft')); 
} 

Вот мой взгляд aircraft.create:

<select> 
    @foreach($aircraft as $id) 
     <option value="{{ $id->shared_aircraft_id }}">{{ $id->aircraft_mfr.' '.$id->aircraft_model }}</option> 
    @endforeach 
</select> 

Вот второе соединение в моем database.php:

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

у меня есть модель, загруженной в контроллер:

use App\SharedAircraft; 

Я думал, что может быть способ заставить сообщение об ошибке, но я тоже ударил стену.

Цените свою помощь.

UPDATE 1

Есть три таблицы в базе данных pams_shared, они являются: shared_engines, shared_ata_codes и shared_propellers. Когда я пытаюсь выполнить DB::table('pams_shared.shared_aircraft')->get();, он разбивается и отображает только белую страницу, НО, когда я пытаюсь использовать любой из других, он работает! Итак, DB::table('pams_shared.shared_engines')->get(); работает так, как ожидалось! означает ли это, что что-то не так с этой таблицей?

UPDATE 2

Я подтвердил, что таблица shared_aircraft вызывает проблему. Я переименовал таблицу в shared_broken и создал новую таблицу с именем shared_aircraft, вставил некоторые данные, и все работает так, как ожидалось. Теперь вопрос в том, что бы это вызвало? Плохие данные? Я проверил свои типы полей и все они соответствуют данным. Что еще может вызвать этот сценарий?

+0

Что вы получаете от dd ($ aircraft) в своем «сломанном» контроллере? – aethergy

+0

Вы пробовали '$ aircraft = SharedAircraft :: all() -> select ('aircraft_mfr', 'aircraft_model') -> get();' – GeorgeQ

+0

Перейдите к 'storage/logs' и просмотрите там ошибки. Вы можете опубликовать полученную вами ошибку, чтобы мы могли вам помочь. – shaddy

ответ

0

Если кто-то приходит сюда, ища ответ, моя проблема оказалась плохими данными в таблице. Я понял это, заменив мой существующий shared_aircraft и вставив несколько строк. Это сработало. Спасибо за помощь!

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