【问题标题】:delete test data in laravel migration script删除 laravel 迁移脚本中的测试数据
【发布时间】:2016-04-13 15:52:48
【问题描述】:

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

任何想法解决这个问题!

【问题讨论】:

  • 解决方案是编写 DB::Raw(db queries).. 编写您的测试数据清理脚本

标签: laravel laravel-seeding


【解决方案1】:

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

use App\ModelName

class RemoveTestData extends Migration {

    public function up(){

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

    }

    public function down(){

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

    }

【讨论】:

    【解决方案2】:
    <?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();
      }
    }
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 我只想删除生产环境中的测试数据记录集而不是整个表。
      • 对造成的误解深表歉意。您是否为要修改的表设置了模型?
      • 是的,所有表都定义了模型类
      猜你喜欢
      • 1970-01-01
      • 2017-03-16
      • 2018-01-30
      • 2014-02-03
      • 2017-11-17
      • 1970-01-01
      • 2019-01-22
      • 2017-10-19
      • 2017-09-03
      相关资源
      最近更新 更多