🐈
親のモデルの更新日時を自動で更新する
リレーションを貼っているモデルで、子モデルが更新された時に子モデルのupdated_atカラムが更新されるのは当然ですが、その際に親モデルのupdated_atも更新したい場合があります。
その場合には子モデルに touches
という変数を作ってあげればOKです!
例えば articles
テーブルと comments
テーブルがあるとして、
コメントが更新されたり新しいコメントが投稿された場合に、 articlesテーブルのupdated_atを更新します。
public function Comment extends Model
{
.
.
.
protected $touches = ['article'];
public function article ()
{
return $this->belongsTo(Article::class, 'article_id', 'id');
}
}
このようにリレーションを明記した上で touches
に入れるだけで、親のモデルのupdated_atが更新されることになります。
Discussion