Skip to content

Cache does not flush in deleting function of Model #173

Closed
@andersonpem

Description

@andersonpem

Describe the bug
Hi. Good night. Firstly, thanks for the great package. It really is handy.
I'm working on a menu class. Before deleting the current model the class checks for any relationships and deletes them.
After all the deletion is complete the cache is supposed to be flushed automatically. However I still get the old results if I refresh a page which queries the model.

Eloquent Query

$mi = Menubuilder\MenuItem::find(9)
$mi->delete();

The relationship in MenuItem is a parent-children relationship with rows of the same table.

The function:

public static function boot() {
        parent::boot();
        static::deleting(function(MenuItem $mi) { // before delete() method call this
             if ($mi->hasChildren()) {
                 foreach ($mi->children() as $mc) {
                     $mc->delete();
                 }
             }
        });
    }

If I refresh the page where I'm seeing the actual list I still see the old items and no query is executed according to Debugbar. When the cache is flushed the queries are re-executed

screenshot from 2018-10-10 19-05-54
In the case of this very image, the "About" section was supposed to disappear. If I go to the terminal and do the same command, then it runs normally.
And what's interesting is that if I check for the deletion of the models they were indeed deleted.

Is this maybe a scope problem?

Stack Trace

#0 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/StreamConnection.php(128): Predis\\Connection\\AbstractConnection->onConnectionError('php_network_get...', 0)
#1 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/StreamConnection.php(178): Predis\\Connection\\StreamConnection->createStreamSocket(Object(Predis\\Connection\\Parameters), 'tcp://redis:637...', 4)
#2 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/StreamConnection.php(100): Predis\\Connection\\StreamConnection->tcpStreamInitializer(Object(Predis\\Connection\\Parameters))
#3 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/AbstractConnection.php(81): Predis\\Connection\\StreamConnection->createResource()
#4 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/StreamConnection.php(258): Predis\\Connection\\AbstractConnection->connect()
#5 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/AbstractConnection.php(180): Predis\\Connection\\StreamConnection->connect()
#6 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/StreamConnection.php(288): Predis\\Connection\\AbstractConnection->getResource()
#7 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/StreamConnection.php(394): Predis\\Connection\\StreamConnection->write('*2\
\
$3\
\
GET\
\
$1...')
#8 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Connection/AbstractConnection.php(110): Predis\\Connection\\StreamConnection->writeRequest(Object(Predis\\Command\\StringGet))
#9 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Client.php(331): Predis\\Connection\\AbstractConnection->executeCommand(Object(Predis\\Command\\StringGet))
#10 /home/developer/repos/research/mbdr/vendor/predis/predis/src/Client.php(314): Predis\\Client->executeCommand(Object(Predis\\Command\\StringGet))
#11 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(96): Predis\\Client->__call('get', Array)
#12 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(108): Illuminate\\Redis\\Connections\\Connection->command('get', Array)
#13 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php(54): Illuminate\\Redis\\Connections\\Connection->__call('get', Array)
#14 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/TagSet.php(87): Illuminate\\Cache\\RedisStore->get('tag:genealabs:l...')
#15 [internal function]: Illuminate\\Cache\\TagSet->tagId('genealabs:larav...')
#16 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/TagSet.php(76): array_map(Array, Array)
#17 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/TagSet.php(66): Illuminate\\Cache\\TagSet->tagIds()
#18 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php(159): Illuminate\\Cache\\TagSet->getNamespace()
#19 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php(138): Illuminate\\Cache\\RedisTaggedCache->deleteKeysByReference('forever_ref')
#20 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php(84): Illuminate\\Cache\\RedisTaggedCache->deleteForeverKeys()
#21 /home/developer/repos/research/mbdr/vendor/genealabs/laravel-model-caching/src/Traits/Caching.php(42): Illuminate\\Cache\\RedisTaggedCache->flush()
#22 /home/developer/repos/research/mbdr/vendor/genealabs/laravel-model-caching/src/Console/Commands/Clear.php(46): Modules\\Menubuilder\\Entities\\MenuItem->flushCache()
#23 /home/developer/repos/research/mbdr/vendor/genealabs/laravel-model-caching/src/Console/Commands/Clear.php(19): GeneaLabs\\LaravelModelCaching\\Console\\Commands\\Clear->flushModelCache('Menubuilder\\\\Men...')
#24 [internal function]: GeneaLabs\\LaravelModelCaching\\Console\\Commands\\Clear->handle()
#25 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array)
#26 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#27 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#28 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Container/Container.php(564): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)
#29 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Console/Command.php(179): Illuminate\\Container\\Container->call(Array)
#30 /home/developer/repos/research/mbdr/vendor/symfony/console/Command/Command.php(255): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#31 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Console/Command.php(166): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))
#32 /home/developer/repos/research/mbdr/vendor/symfony/console/Application.php(886): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#33 /home/developer/repos/research/mbdr/vendor/symfony/console/Application.php(262): Symfony\\Component\\Console\\Application->doRunCommand(Object(GeneaLabs\\LaravelModelCaching\\Console\\Commands\\Clear), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#34 /home/developer/repos/research/mbdr/vendor/symfony/console/Application.php(145): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#35 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Console/Application.php(89): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#36 /home/developer/repos/research/mbdr/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(122): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#37 /home/developer/repos/research/mbdr/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#38 {main}
"} 

Environment

  • PHP: 7.2.10
  • OS: Ubuntu 18.04
  • Laravel: 5.6.39
  • Model Caching: 0.3.1

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions