Dieser Beitrag ist zu sortieren und eine Frage zu stellen. Hallo alle, Ich entwickle ein großes System, das Trigger zu einem guten Zweck bringt. Wir betreiben derzeit die Server-Seite auf Laravel 5.2 mit PHP 7 mit phpmyadmin. In Laravel gibt es nicht wirklich fundierte Dokumentation darüber, wie man einen Auslöser durch Migrationen benutzt und aus dem, was ich entdeckt habe, muss man es meistens "roh" machen.Laravel 5.x Datenbank Trigger und mögliche Best Practices
Unten finden Sie ein einfaches Beispiel, das ich kenne, wie ein Auslöser in einer Migration schreiben:
class CreateAccountTriggerTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
DB::unprepared('
CREATE TRIGGER `my_trigger_name` AFTER INSERT ON `table_the_change_happened`
FOR EACH ROW
BEGIN
INSERT INTO `this_table`
(field1,field2,field3)
VALUES
('value1','value2','value3')
END
');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down() {
DB::unprepared('DROP TRIGGER IF EXISTS `my_trigger_name`');
}
}
Die Frage: jemand eine saubere Art und Weise kennt Variablen innerhalb Laravel zu gebrauchen Abfrage Ersteller?
Die Methode DB :: unparpared() ermöglicht es Ihnen nicht, gebundene Elemente anzuhängen. Es in Eloquent zu versuchen ist fast unmöglich, da es keine solide Dokumentation gibt, die ich für dieses Problem gefunden habe. Wenn jemand das näher ausführen könnte, würde ich es sehr schätzen. Vielen Dank im Voraus
aktualisieren Per hier Anfrage ein Beispiel wäre, was ich meine, indem Sie eine Variable innerhalb Laravel des Query Builder mit:
$stuff = bcrypt($random_numbers);
DB::unprepared('
CREATE TRIGGER `my_trigger_name` AFTER INSERT ON `table_the_change_happened`
FOR EACH ROW
BEGIN
INSERT INTO `this_table`
(field1,field2,field3)
VALUES
('value1','value2','value3',"$stuff")
END
');
Können Sie ein Beispiel dafür geben, was Sie unter "Variablen in Laravels Abfragegenerator verwenden" verstehen? – patricus
@patricus Sicher Sache! Bitte beachten Sie die aktualisierten Änderungen –
Dies ist eine der Anwendungen, die Laravel 'Model Events' hat. Sie brauchen dazu keinen Trigger, wenn Sie ein Modell einfach an 'table_the_change_happened' und dann an die 'public function boot() {parent :: boot(); }); 'Sie können einfach Ihre Logik hinzufügen, um den Einfügevorgang nach dem' parent :: boot() ' – Ohgodwhy