You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()方法:

  1. 定位到第391行附近的代码,将调用Schema::getColumns($table)的部分替换为Laravel 9支持的方法:
    • 仅需列名列表的话,替换为:
      $columns = Schema::getColumnListing($table);
      
    • 需要列详细属性(类型、是否可为空等)的话,使用Doctrine方法:
      $schemaManager = Schema::getConnection()->getDoctrineSchemaManager();
      $columns = $schemaManager->listTableColumns($table);
      // 后续处理需调整为遍历Doctrine的Column对象
      
  2. 保存文件后重新执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 12:43:14