Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我用迁移重命名破坏了我的Laravel框架_Php_Laravel - Fatal编程技术网

Php 我用迁移重命名破坏了我的Laravel框架

Php 我用迁移重命名破坏了我的Laravel框架,php,laravel,Php,Laravel,我有一个很好的工作Laravel结构与数据库迁移和种子。 但我希望我的迁移文件、类、db表被重命名为CreateOrganizationsTable,而不是CreateOrganizationsTable 因此,我更改了迁移文件名、所有类和路由 但是,当我在我的家园框中执行php artisan migrate:reset时,我得到以下错误: PHP Fatal error: Class 'CreateOrganisationsTable' not found in /home/vagrant/

我有一个很好的工作Laravel结构与数据库迁移和种子。 但我希望我的迁移文件、类、db表被重命名为CreateOrganizationsTable,而不是CreateOrganizationsTable

因此,我更改了迁移文件名、所有类和路由

但是,当我在我的家园框中执行
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创建了一些我目前无法修复的链接。

问题是,当您运行
migrate:reset
命令时,Artisan希望对所有类调用down方法。既然你重新命名了这个班级,他就再也找不到了

因此,在重命名类和/或文件之前,运行
php-artisan-migrate:reset
,它将清理数据库并删除所有表,然后只需运行
php-artisan-migrate
。你应该有一个工作的数据库了

如果
migrate:reset
命令仍然不起作用,您只需手动删除表(也不要忘记删除迁移表),然后再次运行
php artisan migrate


编辑:如果您实际上不想运行
迁移:重置
,而只是重命名迁移,您可以编辑文件(和类)的名称。但在此之后,您必须手动编辑数据库中的表
迁移。找到相应的行,编辑文件名以匹配新名称。

如前所述,您必须重置或回滚到新迁移之前的某个点,或手动进行更改。我知道这一点,但在仅更改时间戳以使迁移以不同的顺序运行之后,仍然遇到问题


即使未更改类名,也必须运行
composer dump autoload

我已经执行了composer dump自动加载,现在一切都正常了

我在php artisan中遇到了类似的问题:回滚,我刚刚打开了我的laravel项目并转到下一个目录:

vendor\composer\autoload_static.php


并修改了已更改的php迁移的名称,希望这是您的帮助:)

不要忘记在文件中重命名类

如果您使用的是composer,那么我认为您忘记转储自动加载

composer dump-autoload

在laravel中,如果使用正确的方法,重命名迁移可以很好地工作

我还多次重命名了迁移文件,效果如期

但是,如果要重命名迁移,则必须处理两件事

  • 首先重命名文件名

  • 打开该迁移文件并重命名类名

  • 重命名文件: 将文件名从
    2019\u 06\u 28\u 131130\u创建组织\u表
    更改为
    2019\u 06\u 28\u 131130\u创建组织\u表
    或您想要的任何名称

    打开该迁移文件并根据新名称重命名该文件中的类名

    <?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 {
    
    
    
  • 重命名您的文件
  • 重命名该类
  • 重命名数据库中“迁移”表中的“迁移”列

  • 如果以上所有操作都失败了,就像他们为我做的那样,请尝试直接设置表的名称

    class NameModel extends Model {
        public $table = 'name_exact_of_the_table';
    

    通过信用卡回答

    您能重新命名它以使其工作吗?您是否执行了
    composer dump autoload
    ?我在重命名迁移类后立即执行composer dump autoload,使其重新工作。如果在composer命令之前执行任何php artisan migrate命令,则composer转储自动加载不会产生任何效果。因此,指挥命令至关重要。谢谢,你也试过运行:php artisan dump autoload吗?
    composer dump autoload
    在重命名文件后,
    migrations
    表中的列对我有效!精彩的!非常感谢。为了详细说明这一点,
    class CreateResourceTagsTable extends Migration
    如果要将我的迁移重命名为
    create_tags_table
    ,则需要变成
    class CreateTagsTable extends Migration