From 3162c6527256d20b057ffe0ea802a41ce94c16f5 Mon Sep 17 00:00:00 2001 From: Mohamed Said Date: Tue, 12 Jun 2018 03:40:31 +0200 Subject: [PATCH] prevent calling the bootable trait boot method twice (#24556) --- src/Illuminate/Database/Eloquent/Model.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Database/Eloquent/Model.php b/src/Illuminate/Database/Eloquent/Model.php index 443f09e8b545..ab6fd00488da 100644 --- a/src/Illuminate/Database/Eloquent/Model.php +++ b/src/Illuminate/Database/Eloquent/Model.php @@ -190,9 +190,15 @@ protected static function bootTraits() { $class = static::class; + $booted = []; + foreach (class_uses_recursive($class) as $trait) { - if (method_exists($class, $method = 'boot'.class_basename($trait))) { + $method = 'boot'.class_basename($trait); + + if (method_exists($class, $method) && ! in_array($method, $booted)) { forward_static_call([$class, $method]); + + $booted[] = $method; } } }