cybercog / laravel-eloquent-flag

Laravel Eloquent boolean & timestamp flagged attributes behavior.
https://komarev.com/sources/laravel-eloquent-flag
MIT License
133 stars 21 forks source link

Set future date for timestamp flags #22

Open antonkomarev opened 7 years ago

antonkomarev commented 7 years ago

This could be useful for example when you want an article to be automatically shown in future date.

Right now if future published_at will be setted - this record will be published immediately. Global scopes and helpers should check not for the null value, but for the exact date is past.

This use case will be useful for all timestamp flags. For example expired_at flag will be useful for subscriptions and so on.

antonkomarev commented 7 years ago

The main issues are:

More complex queries

Checks for dates instead of NULL values.

Before:

$builder->whereNotNull('accepted_at');

After:

return $builder->where('accepted_at', '<=', Carbon::now());

Not all applications or models need such functionality

This could be solved by adding additional methods to check if this functionality is required. Each flag should has +1 method.

Scopes naming

For the flag AcceptedAt there are methods like: withRejected, onlyRejected. Should this methods include record which will be accepted in future? Technically it isn't accepted yet because of future timestamp. But logically it's not rejected already.