Я использую версию laravel 5.2 и PHP 7.1. Я пытаюсь перенести файлы из моего проекта laravel, где у меня есть код для проверки существования столбца, как показано ниже —
if (!Schema::hasColumn('table1', 'column1')) {
// Add column1
}
Я знаю, что код отлично работает, и это уже работало несколько раз при настройке одного и того же кода. Но сейчас я пытаюсь это на отдельной машине и не удается с ошибкой —
[ErrorException] Неопределенное свойство:
StdClass :: $ column_name
Я могу избавиться от этой ошибки, если удаляю из кода проверки hasColumn, но это то, что я написал по всему коду и не могу изменять каждую миграцию только ради запуска миграции.
Любая помощь по этому вопросу высоко ценится.
Трассировки стека:
[ErrorException]
Неопределенное свойство: stdClass :: $ column_nameТрассировка исключения: () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:18
Осветить \ Foundation \ Bootstrap \ HandleExceptions-> handleError () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:18
Осветить \ Database \ Query \ Процессоры \ MySqlProcessor-> Осветите \ Database \ Запрос \ Процессоры {закрывающие} ()
в н / д: н / д array_map () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php:21
Осветить \ Database \ Query \ Процессоры \ MySqlProcessor-> processColumnListing ()
в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php:40
Осветить \ Database \ Schema \ MySqlBuilder-> getColumnListing () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:69
Осветить \ Database \ Schema \ Builder-> hasColumn () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217
Подсветка \ Поддержка \ Фасады \ Фасад :: __ callStatic () в
/private/var/www/html/whitelabel_eb/database/migrations/2017_07_28_053158_add_columns_to_project_configurations_table.php:16
AddColumnsToProjectConfigurationsTable -> {closure} () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php:69
Осветить \ База данных \ Схема \ Blueprint -> __ construct () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:207
Осветить \ Database \ Schema \ Builder-> createBlueprint () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php:116
Осветить \ База данных \ Схема \ Построитель-> таблица () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:217
Подсветка \ Поддержка \ Фасады \ Фасад :: __ callStatic () в
/private/var/www/html/whitelabel_eb/database/migrations/2017_07_28_053158_add_columns_to_project_configurations_table.php:103
AddColumnsToProjectConfigurationsTable-> up () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:135
Осветить \ Database \ Migrations \ Migrator-> runUp () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:112
Осветить \ Database \ Migrations \ Migrator-> runMigrationList () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:85
Осветить \ Database \ Migrations \ Migrator-> run () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:74
Осветить \ Database \ Console \ Migrations \ MigrateCommand-> fire () в
н / д: н / д call_user_func_array () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Container/Container.php:507
Осветить \ Container \ Container-> call () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Console/Command.php:150
Осветить \ Console \ Command-> execute () в
/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
Подсветить \ Console \ Command-> run () в
/private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:840
Symfony \ Component \ Console \ Application-> doRunCommand () в
/private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:190
Symfony \ Component \ Console \ Application-> doRun () в
/private/var/www/html/whitelabel_eb/vendor/symfony/console/Application.php:114
Symfony \ Component \ Console \ Application-> run () в
/private/var/www/html/whitelabel_eb/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:107
Подсветить \ Foundation \ Console \ Kernel-> handle () в
/ Частный / вар / WWW / HTML / whitelabel_eb / ремесленник: 35
Глядя на проблему, наверное https://github.com/laravel/framework/pull/21037 это решает проблему, но это изменение было сделано для Laravel 5.5. Laravel 5.2 больше не поддерживается, поэтому вы можете при необходимости использовать свой собственный форк с этим исправлением — вы можете использовать Композитор VCS особенность для этого.
Конечно, обновление до последних версий может быть хорошей идеей (многие проблемы были решены в более поздних выпусках), но при условии, что ваше приложение сложное и не имеет достойных тестов, оно может быть рискованным.
Других решений пока нет …