laravel关注关系数据

时间:2015-08-04 08:55:15

标签: php laravel laravel-4 eloquent relational-database

我正在为我的应用程序构建一个通知系统,我的最基本形式的通知工作正常,但我很难获得需要通过更改数据透视数据来触发的通知工作。

示例:

我的项目模型有这样的关系,

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);
    }
}

所以基本上我现在所做的就是删除所有的关系数据,然后再添加一遍。首先是有更好的方法吗?其次,我想知道添加和删除了哪些数据可以做到这一点?我知道你可以把模型观察者放在模型上,得到原始的和脏的并比较它们,但是你似乎无法在数据透视表上使用观察者?

0 个答案:

没有答案