如何使用php artisan删除模型?

时间:2015-05-28 21:05:56

标签: php model laravel-5

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

php artisan make:model modelname

这将在app文件夹下创建模型,并在database/migrations

中创建迁移

但我无法找到的是如何删除模型......

7 个答案:

答案 0 :(得分:35)

删除模型:只需删除App/或其他任何文件夹下的模型。

删除迁移:如果您迁移了迁移(意味着数据库遭受了更改),您有两种选择:

"项目开始" /丑陋的方式是migrate:rollback,直到撤消迁移(如果这是你做的最后一次迁移,一次回滚就足够了,如果没有,你'我将不得不回滚几次)然后删除迁移文件(database/migrations文件夹中的文件。重要的是:迁移的类仍然是作曲家的自动加载器。所以你必须删除从vendor/composer/autoload_classmap.php加载迁移类。也许composer dumpautoload会起作用,但对我来说却没有。如果您在数据库中没有重要数据并且可以擦除它,请删除迁移文件, composer dumpautoload然后运行php artisan migrate:refresh。这将回滚每次迁移,然后重新迁移所有内容。

"这是在制作中,我搞砸了#34;方式:创建另一个迁移,其中up​​方法正在删除第一个迁移表,down正在创建它(基本上是第一个迁移的up方法)。将两个迁移文件保留在那里,不要删除它们。

如果您尚未迁移它,只需删除迁移文件composer dumpautoload,如果您遇到class/file not found错误,请检查vendor/composer/autoload_classmap.php是否包含该文件的类别刚删除并删除那里的行。

答案 1 :(得分:0)

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

enter image description here

答案 2 :(得分:0)

在vendor / composer / autoload_classmap.php中搜索 Ctrl + F写入型号名称 删除允许编辑此文件夹并删除模型路径

答案 3 :(得分:0)

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

DB_DATABASE=laravel

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

答案 4 :(得分:0)

这是我为项目创建的用于删除控制器和模型的

app / Console / Commands / RemoveController.php

<?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.');
        }
    }
}

app / Console / Commands / RemoveModel.php

<?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.');
        }
    }
}

我希望这对某人有帮助

答案 5 :(得分:0)

没有命令,只需手动操作即可,并且安全

  1. 首先删除模型(如果不需要),不再需要模型
  2. ...database/migrations文件夹中删除迁移
  3. 如果您已经迁移,即已经运行php artisan migrate,请登录到phpmyadmin或SQL(视情况而定),并在数据库中,删除由迁移创建的表
  4. 仍然在数据库内的migrations文件夹中,找到具有该迁移文件名的行并删除该行。

为我工作,希望对您有所帮助!

答案 6 :(得分:0)

没有任何工匠命令来做。你想手动做。

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

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

注意:如果你已经迁移了,你应该想从你的数据库中删除表。你可以登录到你的phpmyadmin面板,你可以这样做。