为了账号安全,请及时绑定邮箱和手机立即绑定

laravel框架如何对vendor内部的class重构

laravel框架如何对vendor内部的class重构

PHP
慕工程0101907 2019-03-15 13:03:04
举个简单的例子laravel框架中的migration功能class Blueprint中集成了一个function timestamps 可以为数据库添加两个字段,不过会使用数据库格式为timestamp,想要改造一下这个function,例如我想要修改成如下:public function timestamps($precision = 0)     {        $this->integer('created_at')->nullable();        $this->integer('updated_at')->nullable();        //或集成其他字段     }我尝试过1.在class Blueprint中直接改,但是考虑到下次的composer update 就会将这个修改覆盖掉。2.写一个继承,在继承内重构这个function,但是在执行 make:migation时报错3.之前看到一个方法 用trial insteadof 不过好像得是 Blueprint 同为 trail才可以想请问一下大家有什么方法可以解决!
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

针对第二种方案,你可以在调用Schema::create()之前,先设置好你那个自定义的Blueprint

查看完整回答
反对 回复 2019-03-15
?
狐的传说

TA贡献1804条经验 获得超3个赞

Schema::blueprintResolver(function($table, $callback, $prefix) {    return new EnhancedBlueprint($table, $callback, $prefix);
});
Schema::create('xxx', function(Blueprint $table) {    //这里的Blueprint实例实际上就是EnhancedBlueprint});


----------
修改后

$schema = Schema::getFacadeRoot();
$schema->blueprintResolver(function($table, $callback, $prefix) {    return new EnhancedBlueprint($table, $callback, $prefix);
});
$schema->create('xxx', function(Blueprint $table) {
});


查看完整回答
反对 回复 2019-03-15
  • 2 回答
  • 0 关注
  • 872 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信