2016-01-23 31 views
5

我创建数据库表usersgroupsgroup_user(MySQL的)。而group_user表(中间表)包含user_idrole_id。用户和小组的关系很多。我想删除groups表中的一个组。在删除组之前,我想检查是否有任何用户属于该组。 我试图这样做。如何获得雄辩从中间表中的数据,硅石

Group.php(型号)

public function users() 
    { 
     return $this->belongsToMany('\Modules\User\Models\User'); 
    } 

Service.php

public function deleteGroup($data) { 
    if (!isset($data['groupID'])) 
     return ['error' => 'Failed to delete group. Group id is required']; 

    $group = Group::find($data['groupID']); 
    if (!$group) 
     return ['error' => 'Failed to delete group. Group not found']; 

    // check any user belongs to group. 
    $result = $group->users()->pivot->user_id; 

    if(!$result){ 
     $group->delete(); 
     return ['success' => 'Successfully delete group.']; 
    } 
    return ['error' => 'Failed to delete group. Group not found']; 
} 

但是,这是行不通的。

+1

您应该复制并粘贴错误文本而不是(不完整)图像:-) – mTorres

回答

3

我发现了。

service.php

public function deleteGroup($data) { 

    $group = Group::find($data['groupID']); 
    if (!$group){ 
     return [ 
      "msg" => "Failed to delete group. Group not found." 
     ]; 
    } 
    // find out any one belongs to the group.   
    $result = $group->users->first()->userID; 
    if ($result){ 
     return [ 
      "msg" => "Failed to delete group. Group has users." 
     ]; 
    } 

    $result = $group->delete($data['groupID']); 
    if(!$result){ 
     return [ 
      "msg" => "Failed to delete group." 
     ]; 
    } 

    return [ 
     "msg" => "Successfully deleted group." 
    ]; 
} 

这是我要做的事。如果有另一种方式,请告诉我。谢谢。

+2

也可以这样做。 $ result = $ group-> users-> count(); if($ result> 0){ return $ this-> response(true,$ errMsg。'Group has users'); } else { $ group-> delete($ data ['groupID']); return $ this-> response(false,'Group deleted successfully'); }' –