我使用具有以下表结构的Laravel 5.6:
public function up() {
Schema::create( 'traffic', function ( Blueprint $table ) {
$table->string( 'id' );
$table->unsignedInteger( 'category_id' );
$table->unsignedInteger( 'magnitude_id' );
$table->unsignedInteger( 'start_id' )->nullable();
$table->unsignedInteger( 'destination_id' )->nullable();
$table->unsignedInteger('locale_id');
$table->integer( 'length' )->comment( 'in metres' );
$table->integer( 'delay' )->comment( 'in seconds' );
$table->decimal( 'position_lat', 10, 8 );
$table->decimal( 'position_lon', 10, 8 );
$table->timestamps();
})
当我转储单个记录时,laravel已将id
字段转换为整数:
Traffic {#351 ▼
#casts: array:1 [▶]
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: false
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:13 [▼
"id" => 3
"category_id" => 6
"magnitude_id" => 3
"start_id" => 1898
"destination_id" => 1898
"locale_id" => 3
"length" => 3650
"delay" => 3061
"position_lat" => "5.27669000"
"position_lon" => "51.85458000"
"created_at" => "2018-03-21 15:55:13"
"updated_at" => "2018-03-21 15:55:13"
"name" => "nl"
]
#original: array:13 [▶]
#changes: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: array:10 [▶]
#guarded: array:1 [▶]
}
在我的模型中,我添加了以下内容而没有任何运气:
class Traffic extends Model {
protected $casts = [
'id' => 'string'
];
根据我迄今为止发现的内容,这应该是将id
字段转换为字符串类型的方法。所以我要么做错了,要么就是这个错误。
关于如何解决这个问题的任何想法?
我知道如果我创建了一个整数字段id
或者将当前字段重命名为其他字段,那么它可能会被解决。但我希望有更好的解决方案。