2016-01-23 23 views
5

ho creato tabelle del database users, groups, e group_user (MySQL) .E group_user tabella (tabella intermedia) contiene la user_id e role_id. la relazione tra utenti e gruppi è molti a molti. Voglio eliminare un gruppo nella tabella groups. Prima di eliminare un gruppo, voglio verificare se c'è qualche utente che appartiene a quel gruppo. Ho provato a farlo in questo modo.Come ottenere i dati da tabella intermedia in eloquenti, selce

Group.php (Modello)

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']; 
} 

Ma questo non funziona.

+1

Dovresti copiare e incollare il testo dell'errore non un'immagine (incompleta) :-) – mTorres

risposta

3

L'ho scoperto.

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." 
    ]; 
} 

Questo è come lo faccio. Se c'è un altro modo per favore dimmelo. Grazie.

+2

Anche tu puoi fare così. $ 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'); } ' –

Problemi correlati