2014-06-24 4 views
0

Pourquoi les événements de modèle updating et updated sont ignorés lorsque getDirty() est vide?La mise à jour et les événements de modèle mis à jour sont ignorés

S'il n'y a aucun changement pour le modèle, cela ne signifie pas que je ne mets pas à jour ses relations.

Mise à jour

Le code suivant:

public function updating(Eloquent $model) 
{ 
    $history = new ContentHistory($model->getOriginal()); 
    $history->added_on = new DateTime;   
    $model->history()->save($history); 
} 

est jamais déclenchée si getDirty() est vide. J'ai ajouté $touches = ['content'] au modèle ContentHistory, mais sans succès.

+0

Peut-être que vous devez toucher le modèle de celui lié? – fmgonzalez

Répondre

0

Vérifiez Touching Parent Timestamps:

Lorsque vous mettez à jour un modèle connexe et si vous souhaitez mettre à jour l'horodatage du parent lorsque le modèle de l'enfant est mis à jour puis il suffit d'utiliser la propriété protected $touches = array('modelname');. Par exemple, si vous avez un modèle Post et qu'il a un modèle enfant comme Comment et si vous souhaitez mettre à jour le modèle Post (champ updated_at d'horodatage uniquement), ajoutez une propriété/tableau $touches dans le modèle Comment et ajoutez le nom du parent modèle dans ce tableau comme:

class Comment extends Eloquent { 

    protected $touches = array('post'); 

    public function post() 
    { 
     return $this->belongsTo('Post'); 
    } 
} 
+0

Ok, je préférerais ne pas être dépendant de '$ touch', mais c'est bien. – user2094178

+0

Désolé d'avoir manqué cela avant, mais en réalité cela ne semble pas fonctionner. S'il vous plaît voir ma mise à jour à la question. – user2094178

Questions connexes