Laravel 9.52.16使用Ibex CRUD生成器报错:未定义getColumns()方法
解决Laravel 9中Ibex CRUD Generator调用
getColumns()方法报错的问题 错误原因
你使用的ibex/crud-generator包调用了Laravel 9不存在的Illuminate\Database\Schema\MySqlBuilder::getColumns()方法,该方法是Laravel 10及以上版本新增的,因此和你的Laravel 9版本不兼容。
解决步骤
方法1:适配CRUD生成器版本
- 查看
ibex/crud-generator的版本说明,找到支持Laravel 9的版本号,修改composer.json中的版本约束后执行composer update ibex/crud-generator完成降级。 - 例如若该包1.x版本支持Laravel9,就在
composer.json中配置:"ibex/crud-generator": "^1.0",再执行更新命令。
方法2:手动修改包代码(临时方案)
找到C:\xampp\htdocs\crud\vendor\ibex\crud-generator\src\Commands\GeneratorCommand.php文件,修改getColumns()方法:
- 定位到第391行附近的代码,将调用
Schema::getColumns($table)的部分替换为Laravel 9支持的方法:- 仅需列名列表的话,替换为:
$columns = Schema::getColumnListing($table); - 需要列详细属性(类型、是否可为空等)的话,使用Doctrine方法:
$schemaManager = Schema::getConnection()->getDoctrineSchemaManager(); $columns = $schemaManager->listTableColumns($table); // 后续处理需调整为遍历Doctrine的Column对象
- 仅需列名列表的话,替换为:
- 保存文件后重新执行
php artisan make:crud categories命令。
注意:此修改会在composer更新包时被覆盖,仅作临时应急用。
方法3:更换兼容的CRUD生成器
改用支持Laravel 9的成熟工具:
- 安装
infyomlabs/laravel-generator:执行composer require infyomlabs/laravel-generator,按文档生成CRUD。 - 结合Laravel官方Breeze/UI手动生成基础CRUD代码。
内容的提问来源于stack exchange,提问作者user24922987
相关产品推荐
相关产品推荐

