Description
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
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