2016-03-16 3 views
1

У меня есть 1 компания. У этой компании есть много отделов. Когда я хочу работать в компании softdelete, отделы также должны быть софтделетов. Сейчас я делаю это так:Laravel удалить связанные записи

Company.php

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

Но почему-то только первый отдел неоспоримым SoftDeleted в то время как компания имеет, например, 17 департаментов.

Что я делаю неправильно ??? Я ищу часы, пока еще нет решения!

--EDIT--

Отдел hasMany Сотрудники.

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

Вы можете добавить '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 Обновлен мой ответ. –

Смежные вопросы