Php laravel监视关系数据
目前我正在为我的应用程序构建一个通知系统,我的通知以最基本的形式工作,但我正在努力使通知工作正常,这些通知需要由正在更改的pivot数据触发 例如: 我有一个项目模型有这样的关系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表中,其结构如下所示 |----------
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可以做这样的事情。也许能帮上忙?