Don't overcomplicate your routes file, you can create one controller to handle it all for you:
Your slug route:
Route::get('{slug}', 'SlugController@call');
A SlugController to handle your calls:
class SlugController extends Controller {
public function call($slug)
{
$p = Page::where('slug', $slug)->first();
if (!is_null($p)) {
return $this->processPage($p);
} else {
$c = Category::where('slug', $slug)->first();
if (!is_null($c)) {
return $this->processCategory($c);
} else {
App::abort(404);
}
}
}
private function processPage($p)
{
/// do whatever you need to do
}
private function processCategory($c)
{
/// do whatever you need to do
}
}