If you want to generate some DB column value when creating record, one of the ways is to add it to model's boot() method.
For example, if you have a field "position" and want to assign the next available position to the new record (like Country::max('position') + 1), do this:
class Country extends Model {    protected static function boot()    {        parent::boot();         Country::creating(function($model) {            $model->position = Country::max('position') + 1;        });    }}
Another option is to create an Observer class, with creating() method inside it.