首页 文章

Laravel迁移,hasColumn方法失败

提问于
浏览
1

我正在使用laravel 5.2版本和PHP 7.1 . 我正在尝试从我的laravel项目中迁移文件,其中我有代码来检查列的存在,如下所示 -

if (!Schema::hasColumn('table1', 'column1')) {
    // Add column1
}

我知道代码非常好,并且在设置相同的代码时已经多次使用了 . 但是现在我在单独的机器上尝试这个并且失败并出现错误 -

[ErrorException]未定义属性:stdClass :: $ column_name

如果我从代码中删除hasColumn检查,我可以摆脱这个错误,但这是我在整个代码中编写的内容,并且不能仅为了运行迁移而修改每个迁移 .

对此有任何帮助非常感谢 .

堆栈跟踪:

[ErrorException]未定义属性:stdClass :: $ column_name异常跟踪:()at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:18 /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:18 Illuminate \ Database \ Query中的Illuminate \ Foundation \ Bootstrap \ HandleExceptions-> handleError() \处理器\ MySqlProcessor-> Illuminate \ Database \ Query \ Processors ()at n / a:n / a array_map()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate /Database/Query/Processors/MySqlProcessor.php:21 Illuminate \ Database \ Query \ Processors \ MySqlProcessor-> processColumnListing()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Database / Schema / MySqlBuilder.php:40 Illuminate \ Database \ Schema \ MySqlBuilder-> getColumnListing()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Database / Schema / Bui lder.php:69 Illuminate \ Database \ Schema \ Builder-> hasColumn()at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217 Illuminate \支持\ Facades \ Facade :: __ callStatic()at /private/var/www/html/whitelabel_eb/database/migrations/2017_07_28_053158_add_columns_to_project_configurations_table.php:16 AddColumnsToProjectConfigurationsTable - > ()at / private / var / www / html / whitelabel_eb /vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php:69 Illuminate \ Database \ Schema \ Blueprint - > __ construct()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Database / Schema / Builder.php:207 Illuminate \ Database \ Schema \ Builder-> createBlueprint()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Database / Schema /Builder.php:116 Illuminate \ Database \ Schema \ Builder-> table()at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217 Illumi nate \ Support \ Facades \ Facade :: __ callStatic()at /private/var/www/html/whitelabel_eb/database/migrations/2017_07_28_053158_add_columns_to_project_configurations_table.php:103 AddColumnsToProjectConfigurationsTable-> up()at / private / var / www / html / whitelabel_eb /vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:135 Illuminate \ Database \ Migrations \ Migrator-> runUp()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Database / Migrations / Migrator.php:112 Illuminate \ Database \ Migrations \ Migrator-> runMigrationList()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Database / Migrations /Migrator.php:85 Illuminate \ Database \ Migrations \ Migrator-> run()at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php: 74 Illuminate \ Database \ Console \ Migrations \ MigrateCommand-> fire()at n / a:n / a call_user_func_array()at / private / var / www / html / whitelabel_eb / vendor / laravel / framework / src / Illuminate / Container / Container.php:507 Illuminate \ Container \ Container-> call()at /private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Console/Command.php :150 Illuminate \ Console \ Command-> execute()at /private/var/www/html/whitelabel_eb/vendor/symfony/console/Command/Command.php:238 Symfony \ Component \ Console \ Command \ Command-> run( )/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Console/Command.php:136 Illuminate \ Console \ Command-> run()at / private / var / www / html / whitelabel_eb / vendor / symfony / console / Application.php:840 Symfony \ Component \ Console \ Application-> doRunCommand()at /private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:190 Symfony \ Component / Console \ Application-> doRun()位于/ private / var /private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:114 Symfony \ Component \ Console \ Application-> run()at / private / var / www / html等/ whitelabel_eb /供应商/ laravel /框架/ src目录/照亮/基金/控制台/的kerne l.php:107 Illuminate \ Foundation \ Console \ Kernel-> handle()at / private / var / www / html / whitelabel_eb / artisan:35

1 回答

  • 0

    看看这个问题,可能https://github.com/laravel/framework/pull/21037这解决了它,但是这个改变是为了Laravel 5.5 . Laravel 5.2不受支持更多,所以你可以尝试在需要时使用自己的fork来修复此问题 - 你可以使用Composer VCS功能 .

    当然升级到最新版本可能是一个好主意(很多问题在以后的版本中得到解决),但假设您的应用程序很复杂并且没有合适的测试,那么它可能存在风险 .

相关问题