Je nachdem, was Sie erreichen möchten, haben Sie hier einige Optionen. Schauen Sie sich zuerst die folgenden an.
Modell Haken mit Ardent Paket
Wenn Sie in autovalidating Modellen interessiert sind, werfen Sie einen Blick auf die https://github.com/laravelbook/ardent Paket - Self-Validierung smart Modelle für Laravel Framework 4 des Eloquent O/RM. Neben bilden große Validierungsfunktionen bietet zusätzliche Modell Haken Sie verwenden können:
Here's the complete list of available hooks:
before/afterCreate()
before/afterSave()
before/afterUpdate()
before/afterDelete()
before/afterValidate() - when returning false will halt validation, thus making save() operations fail as well since the validation was a failure.
Laravel Modell Events
Wenn Sie weitere Sachen verwenden möchten nicht, können Sie einfach die Laravel Modell Ereignisse verwenden (das in der Tat Ardent wickelt sich in die Haken). Schauen Sie in die Dokumentation http://laravel.com/docs/eloquent#model-events
Eloquent Modelle feuern mehrere Veranstaltungen, so dass Sie in verschiedene Punkte in das Modell des Lebenszyklus einzuhaken die folgenden Methoden verwenden: Erstellen, erstellt, die Aktualisierung, aktualisiert, Speichern, gespeichert, gelöscht, gelöscht , Wiederherstellung, restauriert.
Immer wenn ein neues Element zum ersten Mal gespeichert wird, werden die erstellten und erstellten Ereignisse ausgelöst. Wenn ein Element nicht neu ist und die Speichermethode aufgerufen wird, werden die aktualisierenden/aktualisierten Ereignisse ausgelöst. In beiden Fällen werden die Ereignisse speichern/speichern ausgelöst.
Wenn false von der Erstellung zurückgegeben wird, zu aktualisieren, zu speichern, oder Ereignisse zu löschen, wird die Aktion abgebrochen werden:
Lösung
Schließlich reffering, Sie Sie hinterfragen die oben genannten Ansätze nutzen können in vielerlei Hinsicht, aber am offensichtlichsten können Sie es (oder nicht) mit der getDirty()api docs here Methode der Eloquent Models kombinieren. Es wird zum Beispiel mit dem Speichervorgang funktionieren.
Yourmodel::saving(function($model)
{
foreach($model->getDirty() as $attribute => $value){
$original= $model->getOriginal($attribute);
echo "Changed $attribute from '$original' to '$value'<br/>\r\n";
}
return true; //if false the model wont save!
});
Sehr detaillierte Antwort! Danke vielmals. – Karl
Laravel 5.3> https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Model.php#L3177. – imme