Ich bin neu auf symfony speichern und postgreSQL und ich versuche ein Protokoll der Datenbank-Updates zu speichern/löscht Ive diese TabelleSymfony3 jedes Update in die Datenbank
CREATE TABLE "public"."changes" (
"id" INT NOT NULL ,
"id_user" INT NOT NULL,
"operation" VARCHAR(45) NOT NULL,
"table" VARCHAR(45) NOT NULL,
"column" VARCHAR(45) NOT NULL,
"old_data" TEXT NOT NULL,
"new_data" TEXT NOT NULL,
"ts" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY ("id"),
CONSTRAINT "user"
FOREIGN KEY ("id_user")
REFERENCES "public"."users" ("id")
ON DELETE NO ACTION
ON UPDATE NO ACTION);
erstellt Und ich brauche, was ist jedes Mal in diese Tabelle speichern ich sumething wie
/**
* @Route("/insert", name="insert")
*/
public function insertAction(Request $request)
{
$em = $this->get('doctrine')->getManager();
$info = new Info();
$info->setMail($request->request->get('mail'));
$info->setName($request->request->get('name'));
$info->setLastname($request->request->get('lastname'));
$em->persist($info);
$em->flush();
}
ich ist darüber nachzudenken, ein Objekt/Array mit der Tabelle/Spalte/Daten zu erstellen und nach der Spülung, wenn alles in Ordnung ist, rufen Sie eine globale Funktion hinzufügen die Daten in die Änderungstabelle. Gibt es einen einfachen Weg/gute Praxis, dies zu tun?
können Sie es nicht tun, nur ein PostUpdate Listener? –
wie? Ich habe eine Speicherprozedur in eine Datenbank geschrieben, aber ich muss dies auch aus Code machen, da ich den Benutzer, der die Änderung vornimmt, speichern muss. –
Wir haben das mit Postgres '[LISTEN'] getan (https: // www .postgresql.org/docs/current/static/sql-listen.html) & ['NOTIFY'] (https://www.postgresql.org/docs/9.1/static/sql-notify.html) um die Protokollierung zu ermöglichen wird von [einem anderen Prozess] behandelt (http://www.pomm-project.org/news/using-postgresql-notify-in-5-minutes.html). – greg