Php laravel监视关系数据

Php laravel监视关系数据,php,laravel,laravel-4,eloquent,relational-database,Php,Laravel,Laravel 4,Eloquent,Relational Database,目前我正在为我的应用程序构建一个通知系统,我的通知以最基本的形式工作,但我正在努力使通知工作正常,这些通知需要由正在更改的pivot数据触发 例如: 我有一个项目模型有这样的关系 public function projectmanager() { return $this->belongsToMany('User', 'project_managers'); } 因此一个项目属于多个用户,数据存储在project_managers表中,其结构如下所示 |----------

目前我正在为我的应用程序构建一个通知系统,我的通知以最基本的形式工作,但我正在努力使通知工作正常,这些通知需要由正在更改的pivot数据触发

例如:

我有一个项目模型有这样的关系

public function projectmanager() {

    return $this->belongsToMany('User', 'project_managers');

}
因此一个项目属于多个用户,数据存储在project_managers表中,其结构如下所示

|-----------------------|---------------------|----------------------|
|         ID            |      PROJECT_ID     |       USER_ID        |
|-----------------------|---------------------|----------------------|
|         1             |         850         |           85         |
|-----------------------|---------------------|----------------------|
|         2             |         850         |           67         |
|-----------------------|---------------------|----------------------|
|         3             |         850         |           91         |
|-----------------------|---------------------|----------------------|
所以在这个例子中,项目“850”有3个项目经理,他们都与一个用户相关。我没有问题得到这方面的数据,我可以找到谁是用户91等

我的问题是,当我想添加或删除项目经理时,我试图构建的通知系统要求在创建新项目经理时通知项目经理,并告诉他们项目经理是谁

目前,我在我的projectController.php中添加/删除这样的项目经理

if(is_array(Input::get('project_manager')) ){

    $managers = Input::get('project_manager');
    if( empty($managers) ){
       $project->projectmanager()->detach();
    } else {
        foreach( $managers as $pm ) {
            $pm_id[] = $pm['id'];
        }
    }
}

if($project->save() ) {
    if(isset($pm_id) && Input::get('project_manager')) {
        $project->projectmanager()->sync($pm_id);
    }
}

基本上我现在要做的就是删除所有的关系数据,然后再添加所有的数据。首先,有没有更好的方法?第二,我想知道添加和删除了哪些数据,这能做到吗?我知道你可以在模型上放置模型观察器,然后获得原始的和脏的并比较它们,但是你似乎不能在透视表上使用观察器?

可能是boot可以做这样的事情。也许能帮上忙?