我们可以在 Laravel 中的 attach 方法上使用观察者吗?

Can we use an observer on the attach method in Laravel?

我想观察一个数据透视表 table,其中行是在特定模型中使用附加方法创建的,有没有办法通过附加方法观察数据透视表 table负责创建行?

纠结了一段时间后,我来回答我的问题,

所以为了观察一个 table 其行是由附加方法创建的,我们需要做 3 件事

1- 我们需要创建一个模型来扩展 $Illuminate\Database\Eloquent\Relations\Pivot

2- 使用此行将模型连接到数据库 table:

protected $table = 'data_base_table_name';

3- 在与枢轴相关的每个模型中的 BelongsToMany 关系末尾使用方法 'using' table

示例:

假设我们有一个名为 Student 的模型和另一个名为 Group 的模型,我们还有一个名为 group_students 的枢轴 table,由于我们有一个学生 BelongsToMany 组,所以它填充了附加方法,并且Group BelongsToMany Students,

我们需要创建一个名为 GroupStudent 的模型来扩展 Illuminate\Database\Eloquent\Relations\Pivot 通过在 GroupStudent Class:

中添加以下行,link 将其添加到 group_students

protected $table = 'group_student'

之后,我们需要在 Student Model 和 Group Model 中添加 using 方法 The BelongsToMany 关系,如下所示:

public function students()
{
    return $this->BelongsToMany(Student::class)->using(GroupStudent::class);
}

public function groups()
{
    return $this->belongsToMany(Group::class)->using(GroupStudent::class);
}

我们开始吧,现在每当我通过附加方法在 group_students table 中创建一行时,都会观察到这一点并执行创建的方法。