Zunächst einmal bin ich mit Laravel nicht so vertraut (oder mit dem Begriff “schmutzig” für diese Angelegenheit).
Ich bin über diese Codezeile gestolpert –
if ($this->isDirty('status')) {
if (Notification::has('website-status-' . strtolower($this->status))) {
Notification::set($this->account, 'website-status-' . strtolower($this->status), $this->emailAttributes())
->email();
}
}
Und ich konnte nicht verstehen, was das genau bedeutet. Ich habe versucht, es im Internet herauszufinden, aber die Laravel-Site sagt nur dies
“Feststellen, ob ein bestimmtes Attribut unsauber ist”
was nicht wirklich hilft…
stackoverflow.com/questions/18498518/… “Wenn Sie wissen möchten, ob das Modell geändert wurde, seit es aus der Datenbank geholt wurde, oder einfach überhaupt nicht gespeichert wurde (auch wenn es gespeichert werden muss), dann können Sie ->isDirty( ) Funktion”
– ka_lin
3. März 2015 um 15:50 Uhr
Wenn ein Datensatz aus der Datenbank abgerufen wird, ist er „sauber“. Nachdem Sie es geändert haben, wird es “dirty”. Sobald Sie es wieder in der Datenbank speichern, wird es wieder “sauber”.
– Jeff Lambert
3. März 2015 um 16:09 Uhr
Wenn Sie wissen möchten, ob das Modell bearbeitet wurde, seit es aus der Datenbank abgefragt wurde, oder überhaupt nicht gespeichert wurde, verwenden Sie die ->isDirty() Funktion.
Sie haben nur kopiert/eingefügt ka_lins fast wortwörtlich ohne Bestätigung kommentieren?
– Adam
21. September 2018 um 6:55 Uhr
@ Adam muss er nicht, lies das
– Salim Djerbouh
22. September 2019 um 19:34 Uhr
prntscr.com/r7sxgq Irgendeine Idee, dass diese Methode mich TRUE zurückgibt, aber es ändert keinen einzelnen Wert, denke ich.
– M. Amir Shahzad
26. Februar 2020 um 8:12 Uhr
@MAmirShahzad was gibt zurück wenn du ->getChanges() aufrufst? Ich habe ein seltsames Verhalten beim Speichern von dezimalen (8,2) Werten in der Datenbank. (Typ Casting als Änderungen erkennen). Um dies zu lösen verwende ich number_format($variable, 2, ‘.’, ”)
– Tomir Schmite jr.
22. Oktober 2022 um 19:26 Uhr
Die isDirty-Methode bestimmt, ob Attribute geändert wurden, seit das Modell geladen wurde. Sie können einen bestimmten Attributnamen übergeben, um festzustellen, ob ein bestimmtes Attribut unsauber ist.
Eloquent bietet die isDirty, isCleanund wasChanged Methoden, um den internen Zustand Ihres Modells zu untersuchen und festzustellen, wie sich seine Attribute seit dem ursprünglichen Laden geändert haben.
Dies ist die einzige Antwort, die auf eine offizielle Dokumentation hinweist. Muss als akzeptierte Antwort ausgewählt werden.
– alvaro.canepa
30. Januar 2021 um 12:50 Uhr
Kapitän
Als Unterstützung für die akzeptierte Antwort:
$model = Model::find(1);
$model->first_column = $request->first_value;
$model->second_column = $request->second_value;
$model->third_column = $request->third_value;
if($model->isDirty()){
// the model has been edited, else codes here will not be executed
}
$model->save();
14406500cookie-checkWas bedeutet isDirty() in Laravel?yes
stackoverflow.com/questions/18498518/… “Wenn Sie wissen möchten, ob das Modell geändert wurde, seit es aus der Datenbank geholt wurde, oder einfach überhaupt nicht gespeichert wurde (auch wenn es gespeichert werden muss), dann können Sie ->isDirty( ) Funktion”
– ka_lin
3. März 2015 um 15:50 Uhr
Wenn ein Datensatz aus der Datenbank abgerufen wird, ist er „sauber“. Nachdem Sie es geändert haben, wird es “dirty”. Sobald Sie es wieder in der Datenbank speichern, wird es wieder “sauber”.
– Jeff Lambert
3. März 2015 um 16:09 Uhr