在Laravel 4中,如何让pivot table
模型在调用附加或分离时触发保存/保存的模型事件?
"TeamUser"实际上并不需要附加/分离方法工作,因此猜测我相信代表数据透视表的模型永远不会被调用。因此,事件永远不会被触发。
换一种方式问:当我打电话给User::with('Team')->find(1)->teams()->attach(1);
如何让TeamUser
触发它自己的事件时。请注意,上面的附加工作得很好,所有记录都在数据库中更新。
用户
class User extends Eloquent
{
// Relationship
public function teams()
{
return $this->belongsToMany('Team');
}
}
团队
class Team extends Eloquent
{
// Relationship
public function users()
{
return $this->belongsToMany('User');
}
}
团队用户 - TeamUser
表/数据透视表的模型
class TeamUser extends Eloquent
{
public function save(array $options = array())
{
// do cool stuff when relationship is saved via
// attach/detach
}
}
您可以向团队模型添加$touches
。
class Team extends Eloquent
{
protected $touches = array('TeamUser');
// Relationship
public function users()
{
return $this->belongsToMany('User');
}
}
这将更新"团队用户updated_at
"字段。我认为这也将击中TeamUser模型中的save()
方法。
如果这不起作用,您可以在 Team save()
方法中触发自己的事件,并在某处侦听此事件。
Event::fire('team.updated', array($team));
在新版本的Laraval 5.8中,数据透视表会触发引导事件。查看发行说明:https://laravel.com/docs/5.8/releases#pivot