【问题标题】:Laravel/Artisan Migrate & Seed Error [BadMethodCallException]Laravel/Artisan 迁移和种子错误 [BadMethodCallException]
【发布时间】:2023-03-12 12:38:01
【问题描述】:

我在本地环境中运行 Laravel 4,由于某种原因,我无法运行 php artisan migrate 或 php artisan db:seed 而不遇到以下错误:

[BadMethodCallException]                                          
Call to undefined method Illuminate\Database\Query\Builder::up()

我对框架还是比较陌生,但我尝试了以下所有方法都无济于事:

  • composer 自行更新并完全重新安装供应商文件夹
  • 转储自动加载
  • 手动验证所有自动加载的类都映射正确,不存在不正确的依赖关系
  • 重新安装迁移表

我使用php artisan migrate:make products --table=m_products --create 来生成样板,但如果您想查看:

迁移: http://pastebin.com/931rivia(两个自定义迁移,为方便起见粘贴在一起) 种子: http://pastebin.com/zZMgi8K9(两者基本相同,所以只粘贴了一个)

编辑:请注意,我已确保任何地方(在命名空间或其他地方)都没有名为“用户”、“产品”或“类别”的其他类。模型和控制器都有不同的命名约定,所以我很确定没有引用被覆盖......

有人知道会发生什么吗?谢谢!

【问题讨论】:

  • 这似乎是一个很奇怪的错误,在 Builder 类中没有定义 up() 方法。我听说运行php artisan clear-compiled 会有所帮助。可以试试吗?

标签: php laravel laravel-4 composer-php


【解决方案1】:

对于可能遇到此问题的其他人,我确实设法找到了解决方案:

1) CLI 日志位于/app/storage/logs/*,因此那里的堆栈跟踪可能会帮助您识别任何问题

2) Migrator 类最终会根据名称解析/app/database/migrations 中的文件,而不是使用 ReflectionClass 或其他方式来分析实际包含。

注意:这是错误出现的地方——所有定义都是正确的,但文件被意外重命名为:SOME_DATE_category.php INSTEAD OF SOME_DATE_categories.php,因此迁移器试图调用@987654326 @ on Category 这实际上是一个模型。

如果以后有其他人遇到这种情况,请查看迁移文件夹中文件的名称,并确保它们不包含任何引用其他类的字符串。 (或者只是确保不要从最初的工匠migrate:create 命令修改它们。)

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 2014-10-05
    • 2014-08-14
    • 2017-06-21
    • 2020-06-28
    • 1970-01-01
    • 2018-09-16
    • 2014-06-23
    • 2015-03-29
    相关资源
    最近更新 更多