我正在为我的应用程序构建一个通知系统,我的最基本形式的通知工作正常,但我很难获得需要通过更改数据透视数据来触发的通知工作。
示例:
我的项目模型有这样的关系,
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等等。
当我想添加或删除项目经理时,我的问题出现了,我尝试构建的通知系统要求在创建新项目经理时通知项目经理,并告诉他们该项目经理是谁。< / p>
目前我在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);
}
}
所以基本上我现在所做的就是删除所有的关系数据,然后再添加一遍。首先是有更好的方法吗?其次,我想知道添加和删除了哪些数据可以做到这一点?我知道你可以把模型观察者放在模型上,得到原始的和脏的并比较它们,但是你似乎无法在数据透视表上使用观察者?