shay.k
En primer lugar, no estoy muy familiarizado con Laravel (o con el término “sucio” para el caso).
Me topé con esta línea de código:
if ($this->isDirty('status')) {
if (Notification::has('website-status-' . strtolower($this->status))) {
Notification::set($this->account, 'website-status-' . strtolower($this->status), $this->emailAttributes())
->email();
}
}
Y no podía entender lo que eso significa exactamente. Intenté averiguarlo en Internet, pero el sitio de Laravel solo dice esto
“Determinar si un atributo dado está sucio”
que en realidad no ayuda…
Cuando desee saber si el modelo ha sido editado desde que se consultó desde la base de datos, o si no se guardó en absoluto, utilice el ->isDirty()
función.
-
solo copiaste/pegaste
ka_lins
comentar casi palabra por palabra sin reconocimiento?– Adán
21 de septiembre de 2018 a las 6:55
-
@Adam no tiene que hacerlo, lee esto
– Salim Djerbouh
22/09/2019 a las 19:34
-
prntscr.com/r7sxgq Alguna idea de que este método me devuelva VERDADERO, pero creo que no cambia ningún valor único.
– M Amir Shahzad
26 de febrero de 2020 a las 8:12
-
@MAmirShahzad, ¿qué devuelve cuando llama a ->getChanges()? Obtuve un comportamiento extraño al guardar valores decimales (8,2) en la base de datos. (tipo de detección de conversión como cambios). Para resolver esto uso number_format($variable, 2, ‘.’, ”)
–Tomir Schmite Jr.
22 oct a las 19:26
El método isDirty determina si se ha cambiado algún atributo desde que se cargó el modelo. Puede pasar un nombre de atributo específico para determinar si un atributo en particular está sucio.
$user = User::create([
'first_name' => 'Amir',
'last_name' => 'Kaftari',
'title' => 'Developer',
]);
$user->title="Jafar";
$user->isDirty(); // true
$user->isDirty('title'); // true
$user->isDirty('first_name'); // false
Deris musulmán
Eloquent proporciona la isDirty
, isClean
y wasChanged
métodos para examinar el estado interno de su modelo y determinar cómo han cambiado sus atributos desde que se cargaron originalmente.
Puede encontrar una descripción completa y ejemplos de estos tres métodos aquí en el documento oficial:
https://laravel.com/docs/9.x/eloquent#examining-attribute-changes
-
Esta es la única respuesta que apunta a la documentación oficial. Debe seleccionarse como respuesta aceptada.
– alvaro.canepa
30 de enero de 2021 a las 12:50
capitán
Como apoyo a la respuesta aceptada:
$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();
stackoverflow.com/questions/18498518/… “Si desea saber si el modelo se modificó desde que se tomó de la base de datos, o si simplemente no se guardó (es decir, si es necesario guardarlo), puede usar ->isDirty( ) función”
– ka_lin
03/03/2015 a las 15:50
Cuando se obtiene un registro de la base de datos, está “limpio”. Después de modificarlo, se vuelve ‘sucio’. Una vez que lo guarda de nuevo en la base de datos, vuelve a estar “limpio”.
–Jeff Lambert
3 de marzo de 2015 a las 16:09