У меня есть таблица team_members
со следующей структурой, где обновляется только project_request_id
.Я создал log_team_members
с той же структурой данных, поэтому всякий раз, когда я обновляю team_members, я теряю старые данные, которые мне нужны для чтения, поэтому я думал о создании trigger
, который before updating team_members project_request_id
, он сохраняет все old row
к этой таблице.
Можете ли вы помочь мне построить этот триггер из миграции Latavel?
public function up()
{
Schema::create('team_members', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('title');
$table->string('picture');
$table->string('email')->unique();
$table->string('phone_number');
$table->text('background_information')->nullable();
$table->timestamps();
$table->integer('project_request_id')->unsigned();
$table->foreign('project_request_id')->references('id')->on('project_requests')->onDelete('cascade');
});
}
public function up()
{
Schema::create('team_members', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('title');
$table->string('picture');
$table->string('email')->unique();
$table->string('phone_number');
$table->text('background_information')->nullable();
$table->timestamps();
$table->integer('project_request_id')->unsigned();
$table->foreign('project_request_id')->references('id')->on('project_requests')->onDelete('cascade');
});
}
И вот где происходит обновление team_members:
public function createProjectTeam(Request $request){
try {
$projectRequest =
ProjectRequest::create(['project_title' => $request->projectTitle,
'client_id' => $request->projectClientId]);
TeamMember::whereIn('email', $request->projectTeamEmails)
->update([
'project_request_id' => $projectRequest->id
]);
$projectTeam = TeamMember::where('project_request_id', $projectRequest->id)->get();
return response()->json( [
'success'=> true,
'projectRequest' => $projectRequest,
'projectTeam' => $projectTeam,
]);
} catch(\Exception $e){
return ['success' => false, 'message' => 'project team creation failed'];
}
}