Laravel 9更新外键updated_at



嗨,我想知道当数据库中的一个子节点更新时,如何始终为其设置正确的update_at日期。这就是我的处境:

Parent_table :
  id : 1; updated_at: laraval_date
Child_table :
  id:1;foreign_parent_id:1; updated_at: laraval_date
  id:2;foreign_parent_id:1; updated_at: laraval_date
  id:3;foreign_parent_id:1; updated_at: laraval_date
  id:4;foreign_parent_id:1; updated_at: laraval_date
我希望在编辑其中一个子项时更改updated_at父项。例如,当对子项3进行某些编辑时。

Parent_table :
  id : 1; updated_at: laraval_date
Child_table :
  id:1;foreign_parent_id:1; updated_at: laraval_date
  id:2;foreign_parent_id:1; updated_at: laraval_date
  id:3;foreign_parent_id:1; updated_at: other_date <= some edit made
  id:4;foreign_parent_id:1; updated_at: laraval_date
这将导致:

Parent_table :
  id : 1; updated_at: other_date <= date is updated as well
Child_table :
  id:1;foreign_parent_id:1; updated_at: laraval_date
  id:2;foreign_parent_id:1; updated_at: laraval_date
  id:3;foreign_parent_id:1; updated_at: other_date 
  id:4;foreign_parent_id:1; updated_at: laraval_date
添加新的子注释时也应该发生同样的情况。我的解决方案相当不切实际,而且很难维持,因为作为一个孩子,可以通过多种不同的方式进行编辑。

Child::where(something is true)->update(something);
Parent::where(something is true)->touch();

现在有人知道如何更优雅地解决这个问题吗。也许是用某种雄辩的钩子。提前谢谢。

您需要创建关系:https://laravel.com/docs/9.x/eloquent-relationships#touching-父时间戳

类似于:

class Child extends Model
{
    protected $touches = ['parent'];
    public function parent()
    {
        return $this->belongsTo(Parent::class, "foreign_parent_id");
    }
}

那么更新Child实例也会更新Parent

相关内容

  • 没有找到相关文章

最新更新