删除laravel迁移脚本中的测试数据

use*_*867 7 laravel laravel-seeding

我正在尝试清除生产表中的测试数据。在简单的环境中,我可以编写一个脚本来清理测试数据,但我想知道如何在 Laravel 迁移脚本中执行相同的操作

我有一个生产测试用户,想清除数据库中生成的所有相关记录。在种子文件中,我可以根据电子邮件地址获取学生 ID,然后根据 ID 删除课程和其他信息?。不知道是不是听起来像laravel的做事方式!

学生 ID = 101

他注册了三个课程 他有出勤记录 他有交流记录

现在我想根据他的 emailId 获取学生 id 然后想从课程、出勤、交流表中删除记录,最后从学生表中删除 id

我在做

$sdetail = student::where('email','some@test.com')->first();
echo "you are checking fir: ".$sdetail ->id;
$classes= class::where('studentId',"$sdetail->id")->get();
foreach($classes as $class)
{
    echo $class->name;   //print only one record I have three rec!
    DB::table('courses')->where("id",$class->id)->delete();
}
Run Code Online (Sandbox Code Playgroud)

任何想法解决这个问题!

Dan*_*son 7

您可以在迁移中运行模型函数 - 您只需要在顶部包含模型。

use App\ModelName

class RemoveTestData extends Migration {

    public function up(){

        ModelName::where('id', $ID)->first()->delete();

    }

    public function down(){

        ModelName::create([
            //Test Data
        ]);

    }
Run Code Online (Sandbox Code Playgroud)


Dan*_*son 1

truncate()您可以在迁移中使用该函数来删除所有行并重置任何自动增量字段。

Schema::table('table_name', function($table)
{
    $table->truncate();
});
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/docs/5.1/queries#deletes