Skip to content

Passing DateTime object to where clause #253

Closed
@kangoo13

Description

@kangoo13

Describe the bug
Giving an DateTime to the where clause statement throws an error.

Eloquent Query
Please provide the complete eloquent query that caused the bug, for example:

$dateAgo       = (new \DateTime('@' . time()))->sub(new \DateInterval(static::EXPIRACY_MESSAGE_CACHE_DELAY));
$eloquentModel = Eloquent::where('cache_set_at', '<=', $dateAgo)
                                     ->get();

Stack Trace
[2019-05-21 14:00:19] production.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Return value of GeneaLabs\LaravelModelCaching\CacheKey::getValuesFromWhere() must be of the type string, object returned in /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/CacheKey.php:169
Stack trace:
#0 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/CacheKey.php(145): GeneaLabs\LaravelModelCaching\CacheKey->getValuesFromWhere(Array)
#1 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/CacheKey.php(309): GeneaLabs\LaravelModelCaching\CacheKey->getValuesClause(Array)
#2 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/CacheKey.php(196): GeneaLabs\LaravelModelCaching\CacheKey->getOtherClauses(Array)
#3 [internal function]: GeneaLabs\LaravelModelCaching\CacheKey->GeneaLabs\LaravelModelCaching{closure}(NULL, Array)
#4 /home/deploy/projects/callbot/releases/281/vendor/laravel/framework/src/Illuminate/Support/Collection.php(1501): array_reduce(Array, Object(Closure), NULL)
#5 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/CacheKey.php(199): Illuminate\Support\Collection->reduce(Object(Closure))
#6 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/CacheKey.php(40): GeneaLabs\LaravelModelCaching\CacheKey->getWhereClauses()
#7 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/Traits/Caching.php(84): GeneaLabs\LaravelModelCaching\CacheKey->make(Array, NULL, '')
#8 /home/deploy/projects/callbot/releases/281/vendor/genealabs/laravel-model-caching/src/Traits/Buildable.php(94): GeneaLabs\LaravelModelCaching\CachedBuilder->makeCacheKey(Array)
#9 /home/deploy/projects/callbot/releases/281/app/Services/Media/MediaService.php(81): GeneaLabs\LaravelModelCaching\CachedBuilder->get()

Environment

  • PHP: 7.2.17
  • OS: Ubuntu 16
  • Laravel: 5.8
  • Model Caching: 0.5.0

Additional context
Seems like the where statement doesn't like DateTime object!

Thanks !

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions