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