Laravel 5

Ne pas modifier updated_at sous conditions

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    148

    Bonjour, je voudrais que si je modifie une ligne de ma db plusieurs par jour, que je en garde que le premier upated_at , donc ne pas modifier l'heure.

    J'ai tenter un truc comme ça

    public function setUpdatedAtAttribute($value)
    {
    if($this->attributes['updated_at'] == null){
    $this->attributes['updated_at'] = $value;
    }else{
    $date = Carbon::createFromFormat('Y-m-d', $this->updated_at->format('Y-m-d'));
    $date2 = Carbon::createFromFormat('Y-m-d', $value->format('Y-m-d'));
    if($date->eq($date2) == true){

    // dd($this->attributes['updated_at']);
    $this->attributes['updated_at'] = $this->attributes['updated_at'];
    }else{
    $this->attributes['updated_at'] = $value;
    }
    }
    }

    Mais cela ne focntionne pas, comme si le update , avais lieu en after.....

    Merci de votre aide.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1950

    Salut,

    Je pense qu'il faut désactiver les timestamps pour le modèle et ensuite gérer directement les dates avec des events.

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    148

    Merci, j'ai fais ceci du coup et mes tests sont concluant :

    public function setUpdatedAt($value)
    {
    if ($this->updated_at == null) {
    $this->attributes['updated_at'] = $value;
    } else {
    $date = Carbon::createFromFormat('Y-m-d', $this->updated_at->format('Y-m-d'));
    $date2 = Carbon::createFromFormat('Y-m-d', $value->format('Y-m-d'));
    if ($date->eq($date2) == true) {
    $this->timestamps = false;
    } else {
    $this->attributes['updated_at'] = $value;
    }
    }
    }

Vous ne pouvez pas répondre à ce sujet.