model read-only

1. You can setup global listener for all the models:

Event::listen('eloquent.saving: *', function ($model) {
  return false;
});
2. Or for given model:

Event::listen('eloquent.saving: User', function ($user) {
  return false;
});
// or
User::saving(function ($user) {
  return false;
});

// If it's not global, but for single model, then I would place it in boot():
// SomeModel
public static function boot()
{
   parent::boot();

   static::saving(function ($someModel) {
      return false;
   });
}
3. For read-only model you need just one saving event listener returning false, then all: Model::create, $model->save(), $model->update() will be rejected.
4. Here's the list of all Eloquent events: booting, booted, creating, created, saving, saved, updating, updated, deleting, deleted and also restoring and restored provided by SoftDeletingTrait.
https://stackoverflow.com/questions/28203317/prevent-certain-crud-operations-on-laravel-eloquent-models