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)
任何想法解决这个问题!
您可以在迁移中运行模型函数 - 您只需要在顶部包含模型。
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)
truncate()您可以在迁移中使用该函数来删除所有行并重置任何自动增量字段。
Schema::table('table_name', function($table)
{
$table->truncate();
});
Run Code Online (Sandbox Code Playgroud)
https://laravel.com/docs/5.1/queries#deletes