我有一个很好的数据库迁移和播种的Laravel结构。但是我希望我的迁移文件,类,db表被重命名为CreateOrganizationsTable而不是CreateOrganizationsTable
所以我改变了迁移文件名,所有的类和路由。
但是当我在Homestead盒子中执行php artisan migrate:reset
时,我得到以下错误:
PHP Fatal error: Class 'CreateOrganisationsTable' not found in /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php on line 299
工匠创建了一些链接,我现在无法修复。
正如士气所提到的,您必须在新迁移或手动进行更改之前重置或回滚到某个点。我知道这一点,但在仅更改时间戳以不同的顺序运行迁移后,仍然会遇到问题。
即使没有更改类名,也必须运行composer dump-autoload
。
不要忘记在文件中重新命名类
我在php artisan:rollback中遇到了类似的问题,我刚刚打开我的laravel项目并转到下一个目录:
供应商'作曲家' autoload_static.php
并修改了PHP迁移的名称,希望这对您有所帮助:)
问题是,当你运行migrate:reset
命令时,artisan想在所有类上调用down方法。自从你重命名了这个类,他就再也找不到它了!
因此,在重命名您的类和/或文件之前,运行php artisan migrate:reset
,这将清理您的数据库并删除所有表,之后只需运行php artisan migrate
。你应该又有一个工作的数据库了。
如果migrate:reset
命令仍然不起作用,您可以简单地手动删除表(不要忘记删除迁移表)并再次运行php artisan migrate
。
Edit:如果您实际上不想运行migrate:reset
,而只是重命名迁移,您可以编辑文件(和类)的名称。但在此之后,您必须手动编辑数据库中的表migrations
。找到相应的行,并编辑文件的名称以匹配新名称。
- 重命名文件
- 重命名类
- 重命名数据库中migrations表中的migrations列
如果使用正确的方法,重命名迁移可以很好地工作。
我也重命名了我的迁移文件很多次,它像预期的那样工作,
但是如果你想重命名迁移,那么你必须注意两件事:
-
第一重命名文件名
-
打开迁移文件并重命名类名
重命名文件:将您的文件名从2019_06_28_131130_create_organisations_table
更改为2019_06_28_131130_create_organizations_table
或任何您想要的名称。
打开该迁移文件,并根据您的新名称重命名该文件中的类名:
<?php
use Illuminate'Support'Facades'Schema;
use Illuminate'Database'Schema'Blueprint;
use Illuminate'Database'Migrations'Migration;
//change it from
//class CreateOrganisationsTable extends Migration {
//to
class CreateOrganizationsTable extends Migration {
我想你已经重命名了迁移文件,但是你忘了重命名类名,所以这样做,并尝试运行php artisan migrate:refresh
,它会像你想要的那样工作。
我已经执行了一个composer dump- autolload,现在一切正常
如果你使用的是composer,那么我想你可能忘了dump- autolload
composer dump-autoload
如果以上都失败了,就像他们为我做的那样,尝试直接设置表的名称
class NameModel extends Model {
public $table = 'name_exact_of_the_table';
回答通过如何修复错误基表或视图未找到:1146表laravel关系表?信贷https://stackoverflow.com/users/1607975/jpasosa