public function clean($command) { $lockedCombinations = \Combination::whereExists(function ($q) { $q->select(DB::raw(1))->from('Simulation')->whereRaw('Simulation.Combination_Id = Combination.Combination_Id'); })->get(); if (!$lockedCombinations->isEmpty()) { $command->info("The following combinations are locked for removal by simulations\n * " . $lockedCombinations->implode('asString', "\n * ")); } \Combination::whereNotExists(function ($q) { $q->select(DB::raw(1))->from('Simulation')->whereRaw('Simulation.Combination_Id = Combination.Combination_Id'); })->delete(); }