8

我正在尝试从我的生产表中清除测试数据。在简单的环境中,我可以编写一个脚本来清理测试数据,但我想知道如何在 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();
}

任何想法解决这个问题!

4

3 回答 3

7

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

use App\ModelName

class RemoveTestData extends Migration {

    public function up(){

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

    }

    public function down(){

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

    }
于 2016-01-08T21:58:20.113 回答
4
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

use App\Models\settings;

class ChangeCreateSettingsInsert extends Migration
{
  public function up()
  {
    settings::create([
        "product_id" => 1           
    ]);
  }

  public function down()
  {
    settings::where('product_id',1)->delete();
  }
}
于 2019-10-30T10:30:41.303 回答
1

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

Schema::table('table_name', function($table)
{
    $table->truncate();
});

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

于 2016-01-08T21:23:23.697 回答