2222use Illuminate \Database \Eloquent \Builder as EloquentBuilder ;
2323use Illuminate \Database \Query \Builder as QueryBuilder ;
2424use Illuminate \Support \Facades \Facade ;
25+ use Illuminate \Support \Traits \Macroable ;
2526use ReflectionClass ;
2627use Throwable ;
2728
@@ -47,8 +48,6 @@ class Alias
4748 protected $ phpdoc = null ;
4849 protected $ classAliases = [];
4950
50- protected $ isMacroable = false ;
51-
5251 /** @var ConfigRepository */
5352 protected $ config ;
5453
@@ -63,13 +62,12 @@ class Alias
6362 * @param array $magicMethods
6463 * @param array $interfaces
6564 */
66- public function __construct ($ config , $ alias , $ facade , $ magicMethods = [], $ interfaces = [], $ isMacroable = false )
65+ public function __construct ($ config , $ alias , $ facade , $ magicMethods = [], $ interfaces = [])
6766 {
6867 $ this ->alias = $ alias ;
6968 $ this ->magicMethods = $ magicMethods ;
7069 $ this ->interfaces = $ interfaces ;
7170 $ this ->config = $ config ;
72- $ this ->isMacroable = $ isMacroable ;
7371
7472 // Make the class absolute
7573 $ facade = '\\' . ltrim ($ facade , '\\' );
@@ -431,7 +429,7 @@ protected function detectMethods()
431429
432430 // Check if the class is macroable
433431 // (Eloquent\Builder is also macroable but doesn't use Macroable trait)
434- if ($ this -> isMacroable || $ class === EloquentBuilder::class) {
432+ if ($ class === EloquentBuilder::class || in_array (Macroable::class, $ reflection -> getTraitNames ()) ) {
435433 $ properties = $ reflection ->getStaticProperties ();
436434 $ macros = isset ($ properties ['macros ' ]) ? $ properties ['macros ' ] : [];
437435 foreach ($ macros as $ macro_name => $ macro_func ) {
0 commit comments