implementation uses eloquent model