如何使用php artisan删除模型?

如何使用php artisan删除模型?,php,model,laravel-5,Php,Model,Laravel 5,是否有安全删除Laravel 5中模型的命令?创建我们使用的模型 php artisan make:model modelname 这将在app文件夹下创建一个模型,并在database/migrations 但我找不到的是如何删除模型…删除模型:只需在App/或任何其他文件夹下删除模型即可 删除迁移:如果已迁移(意味着数据库已发生更改),则有两种选择: “项目启动”/“丑陋的方式”是迁移:回滚,直到迁移被撤消(如果是上次迁移,一次回滚就足够了,如果不是,您将不得不回滚几次),然后删除迁移文件

是否有安全删除Laravel 5中模型的命令?创建我们使用的模型

php artisan make:model modelname
这将在
app
文件夹下创建一个模型,并在
database/migrations


但我找不到的是如何删除模型…

删除模型:只需在
App/
或任何其他文件夹下删除模型即可

删除迁移:如果已迁移(意味着数据库已发生更改),则有两种选择:

“项目启动”/“丑陋的方式”是
迁移:回滚
,直到迁移被撤消(如果是上次迁移,一次回滚就足够了,如果不是,您将不得不回滚几次),然后删除迁移文件(位于
数据库/migrations
文件夹中的那一个。这里很重要的一点:迁移的类仍将由composer自动加载。因此,您必须从
vendor/composer/autoload_classmap.php
中删除迁移类加载。也许
composer dumpautoload
将起作用,但它对我来说不起作用。如果您没有importa数据库中的nt数据,您可以擦除它,删除迁移文件,
composer dumpautoload
,然后运行
php artisan migrate:refresh
。这将回滚每次迁移,然后将所有内容迁移回数据库

“这是在生产中,我搞砸了”的方法:创建另一个迁移,其中up方法正在删除第一个迁移的表,down方法正在创建它(基本上是第一个迁移中的up方法)。将两个迁移文件留在那里,不要删除它们


如果您没有迁移它,只需删除迁移文件,
composer dumpautoload
,如果您有一些
类/文件未找到
错误,请检查
vendor/composer/autoload\u classmap.php
是否具有您刚才删除的文件的类,并删除其中的行。

如果您看到此错误,可以在App文件夹中删除模型或(模型已存在!)


在vendor/composer/autoload_classmap.php中搜索 Ctrl+F写入模型名
delete allow edit this folder and delete model path

当您的数据库名称与
.env
文件中定义的名称不同时,也会出现问题

DB_DATABASE=laravel

默认情况下,
.env
中的数据库结构将数据库名称设置为laravel。您可以用数据库的名称替换
laravel

以下是我为项目创建的用于删除控制器和模型的内容

app/Console/Commands/RemoveController.php


无需命令,只需手动执行即可,安全可靠

  • 首先删除模型(如果您不再需要该模型)
  • …数据库/migrations
    文件夹中删除迁移
  • 如果您已经迁移,即如果您已经运行了
    php artisan migrate
    ,请登录到您的phpmyadmin或SQL(无论哪种情况),并在数据库中删除迁移创建的表
  • 仍然在数据库中的“迁移”表中,找到具有该迁移文件名的行,然后删除该行

  • 适合我,希望有帮助!

    没有任何artisan命令可以执行此操作。您想手动执行此操作

  • 您想从模型目录中删除模型
    路径:app\Models\yourmodel.php

  • 在下一步中,您要从迁移文件夹中删除迁移文件
    路径:database\migrations\yourmigrationfile.php


  • 注意:如果您已经迁移,您应该想从数据库中删除表。您可以登录到您的phpmyadmin面板并执行此操作。

    您必须手动删除模型。因此,我只需删除app folder下的模型文件和migration@RobinR?是,如果您想删除迁移文件。否则,如果您想执行迁移操作n回滚迁移您需要执行回滚。嗯,好的,有一个命令来执行这项操作会很有用…谢谢@RobinR,还有一个问题,如果我想添加或删除表的一列,我是否要创建一个新迁移?问题是,我想删除在其他三个模型之前创建的模型。我可以指定odel to rollback@RobinR?Thanx,在我的情况下,应用程序仍在开发中。因此,步骤将与生产中的步骤相同,或者我只是删除它们吗?如果您在早期开发中,这意味着您的数据库可能仍在更改,请回滚直到迁移撤消,删除迁移文件,
    dumpautoload
    ,然后再次迁移。我还建议您设置some seeders使测试更容易,然后
    php artisan迁移:刷新--seed
    。我将在答案中添加刷新解决方案。删除
    App/model
    类,删除迁移文件并手动从autoload_classmap.php中删除条目,这些步骤有效吗?或者我应该不惜任何代价使用
    composer dumpautoload
    rom评论:嗨,这篇文章似乎并没有为这个问题提供答案,它更适合作为评论。
    <?php
    
    namespace App\Console\Commands;
    
    use Illuminate\Console\Command;
    
    class RemoveController extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature = 'remove:controller {name}';
    
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'Remove the controller class';
    
        /**
         * Create a new command instance.
         *
         * @return void
         */
        public function __construct()
        {
            parent::__construct();
        }
    
        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle():void
        {
            $controllerName = $this->argument('name').'.php';
            $controllerPath = base_path('app/Http/Controllers/').$controllerName;
            if(file_exists($controllerPath)){
                unlink($controllerPath);
                $this->line('Controller removed successfully.');
            }else{
                $this->line('No controller found.');
            }
        }
    }
    
    <?php
    
    namespace App\Console\Commands;
    
    use Illuminate\Console\Command;
    
    class RemoveModel extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature = 'remove:model {name}';
    
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = 'Remove the model class';
    
        /**
         * Create a new command instance.
         *
         * @return void
         */
        public function __construct()
        {
            parent::__construct();
        }
    
        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle():void
        {
            $modelName = $this->argument('name').'.php';
            $modelPath = base_path('app/').$modelName;
            if(file_exists($modelPath)){
                unlink($modelPath);
                $this->line('Model removed successfully.');
            }else{
                $this->line('No controller found.');
            }
        }
    }