Laravel 8 更新父级时间戳
当一个模型属 belongsTo
或者 belongsToMany
另一个模型时, 例如 Comment
属于 Post
,有时更新子模型导致更新父模型时间戳非常有用。例如,当 Comment
模型被更新时,你需要自动「触发」父级 Post 模型的 updated_at
时间戳的更新。Eloquent 让它变得简单。只要在子模型加一个包含关联名称的 touches
属性即可:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
/**
* 需要触发的所有关联关系
*
* @var array
*/
protected $touches = ['post'];
/**
* 评论所属的文章
*/
public function post()
{
return $this->belongsTo('App\Models\Post');
}
}
现在,当你更新 Comment
时,对应父级 Post
模型的 updated_at
字段同时也会被更新,使其更方便得知何时让一个 Post
模型的缓存失效:
$comment = App\Models\Comment::find(1);
$comment->text = 'Edit to this comment!';
$comment->save();