Я новичок в системе 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
, вставил некоторые данные, и все работает так, как ожидалось. Теперь вопрос в том, что бы это вызвало? Плохие данные? Я проверил свои типы полей и все они соответствуют данным. Что еще может вызвать этот сценарий?
Что вы получаете от dd ($ aircraft) в своем «сломанном» контроллере? – aethergy
Вы пробовали '$ aircraft = SharedAircraft :: all() -> select ('aircraft_mfr', 'aircraft_model') -> get();' – GeorgeQ
Перейдите к 'storage/logs' и просмотрите там ошибки. Вы можете опубликовать полученную вами ошибку, чтобы мы могли вам помочь. – shaddy