2016-03-16 127 views
1

我有1個公司。那家公司有很多部門。當我想軟刪除公司時,部門也應該被軟刪除。現在,我這樣做是這樣的:Laravel刪除相關記錄

Company.php

protected static function boot()       
{               
    parent::boot();          
    static::deleting(function($company) {     
     foreach($company->department as $department)  
     {             
      $department->delete();      
     }             
    });             
} 

但由於某些原因只有第一個部門beeing softdeleted同時公司擁有例如17個部門。

我在做什麼錯?我正在尋找幾小時,現在仍然沒有解決方案!

- EDIT--

部門有許多員工。

protected static function boot() 
    { 
     parent::boot(); 
     static::deleting(function($department) { 
      Employee::where('DepartmentId','=',$department->DepartmentId)->delete(); 
     }); 
    }  
+0

您可以爲$ company添加'print_r',以解決您的問題。 –

回答

0

試試這個:

$departmentID[] = Department::where('company_id', '=', $company->id)->select('id')->distinct()->get()->toArray(); 
Department::where('company_id', '=', $company->id)->delete(); 

DB::table('users')->whereIn('department_id', $departmentID)->delete(); 

看,如果沒有什麼幫助。

+0

謝謝,這是刪除所有公司部門的工作,但一個部門有許多用戶這將如何工作,因爲DepartmentId可能會有所不同。 (請參閱我的編輯!) – Jamie

+0

因此,您想刪除屬於不同部門的所有用戶,而這部分用戶又是公司的一部分,對嗎? –

+0

@jamie更新了我的答案。 –