我是Laravel框架的新手,一直在观察Laracasts并阅读文档来学习系统。到目前为止一切都那么好,但现在我正在走上访问第二个数据库的道路,而且我遇到了问题。出于某种原因,我可以使用where()
方法从数据库中提取数据,但是当我使用select()
时它会中断(页面不加载,没有显示错误,日志文件为空)或all()
方法,我无法弄清楚原因。
这是我的模特:
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,
],
我确实在Controller中加载了模型:
use App\SharedAircraft;
我在想可能有办法强制显示错误信息,但我也在那里碰壁。
感谢您的帮助。
更新1
pams_shared
数据库中还有其他三个表,它们是:shared_engines
,shared_ata_codes
和shared_propellers
。当我尝试DB::table('pams_shared.shared_aircraft')->get();
时,它会断开并只显示一个白页,但是当我尝试其他任何一个时,它都有效!所以,DB::table('pams_shared.shared_engines')->get();
按预期工作!这是否意味着那张桌子有问题?
更新2
我已确认表shared_aircraft
导致问题。我将表重命名为shared_broken
并创建了一个名为shared_aircraft
的新表,插入了一些数据,一切都按预期工作。
现在的问题是,这会导致什么?数据不好?我检查过我的字段类型,它们都匹配数据。还有什么会导致这种情况?
答案 0 :(得分:0)
如果有人来这里寻找答案,我的问题结果就是表格中的错误数据。我通过替换现有的shared_aircraft
并插入几行来解决这个问题。有效。谢谢你的帮助!