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