我有一个很好的工作Laravel结构,包括数据库迁移和播种。 但我希望将我的迁移文件,类,数据库表重命名为 CreateOrganizationsTable 而不是 CreateOrganisationsTable
所以我改变了迁移文件名,所有类和路由。
但是当我在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
Artisan创造了一些我目前无法修复的链接。
答案 0 :(得分:27)
正如士气所提到的,您必须在新迁移之前重置或回滚到某一点,或手动进行更改。我知道这一点,但在仅更改时间戳以使迁移以不同顺序运行后仍然遇到问题。
即使您没有更改班级名称,也必须运行composer dump-autoload
。
答案 1 :(得分:7)
不要忘记在文件中重命名该类
答案 2 :(得分:5)
问题是当你运行migrate:reset
命令时,artisan想要在所有类上调用down方法。自从你重新命名课程后,他再也找不到了!
因此,在重命名您的类和/或文件之前,运行php artisan migrate:reset
将清理您的数据库并删除所有表,然后立即运行php artisan migrate
。你应该有一个工作的数据库。
如果migrate:reset
命令仍然无效,您只需手动删除表格(不要忘记删除迁移表格)并再次运行php artisan migrate
。< / p>
修改:如果您实际上并不想运行migrate:reset
,只是重命名迁移,则可以编辑文件名(和类)。但之后,您必须手动编辑数据库中的表migrations
。找到相应的行,然后编辑文件名以匹配新名称。
答案 3 :(得分:3)
我和php工匠有类似的问题:rollback,我刚打开了我的laravel项目并转到下一个目录:
<强>供应商\作曲家\ autoload_static.php 强>
并修改了已更改的php迁移的名称,希望对您有所帮助:)
答案 4 :(得分:2)
答案 5 :(得分:1)
我已经执行了一个composer dump-autoload,现在一切正常
答案 6 :(得分:0)
如果您使用的是作曲家,那我想您忘记了转储自动加载
composer dump-autoload
答案 7 :(得分:0)
在laravel中,如果以正确的方式进行迁移,重命名可以很好地工作。
我还多次重命名了迁移文件,它可以按预期工作,
但是如果您想重命名迁移,则必须注意两件事:
首先重命名文件名
打开该迁移文件,并同时重命名类名称
重命名文件:
将文件名从2019_06_28_131130_create_organisations_able
更改为2019_06_28_131130_create_organizations_able
或您想要的任何名称。
打开该迁移文件,然后根据您的新名称重命名该文件中的类名:
<?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
,它将按需要运行。
答案 8 :(得分:0)
如果以上都失败了,就像他们为我所做的那样尝试直接设置表的名称
class NameModel extends Model {
public $table = 'name_exact_of_the_table';
通过How to fix error Base table or view not found: 1146 Table laravel relationship table?信用https://stackoverflow.com/users/1607975/jpasosa回答