luceos I have tried this. It didn't work. I searched flarum/core codebase, and found out that getDisplayNameAttribute is never called anywere.
I guess this function is put in place for someone to explicitly call it to get display_name.
So I tried to verify if call getDisplayNameAttribute could get display_name correctly by following test code:
$events->listen(PostWillBeSaved::class, function (PostWillBeSaved $event) {
$display_name = $event->actor->getDisplayNameAttribute();
$event->post->content = 'This is not what I wrote! by test display_name '.$display_name;
});
Then I create a post, following exception is thrown:
"detail": "BadMethodCallException: Call to undefined method Illuminate\\Database\\Query\\Builder::getDisplayNameAttribute()
I guess the underlying database call for getDisplayNameAttribute
hasn't been built yet?
Please advise.
The whole debuge error message:
POST http://localhost/api/discussions
{
"errors": [
{
"code": 500,
"title": "Internal server error",
"detail": "BadMethodCallException: Call to undefined method Illuminate\\Database\\Query\\Builder::getDisplayNameAttribute() in /home/fqye/projects/study/flarum/vendor/illuminate/database/Query/Builder.php:2101\nStack trace:\n#0 [internal function]: Illuminate\\Database\\Query\\Builder->__call('getDisplayNameA...', Array)\n#1 /home/fqye/projects/study/flarum/vendor/illuminate/database/Eloquent/Builder.php(1015): call_user_func_array(Array, Array)\n#2 [internal function]: Illuminate\\Database\\Eloquent\\Builder->__call('getDisplayNameA...', Array)\n#3 /home/fqye/projects/study/flarum/vendor/illuminate/database/Eloquent/Model.php(3444): call_user_func_array(Array, Array)\n#4 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Database/AbstractModel.php(204): Illuminate\\Database\\Eloquent\\Model->__call('getDisplayNameA...', Array)\n#5 /home/fqye/projects/study/flarum/workbench/qibot-hello-world/bootstrap.php(23): Flarum\\Database\\AbstractModel->__call('getDisplayNameA...', Array)\n#6 [internal function]: Flarum\\Extension\\ExtensionServiceProvider->Qibot\\Hello\\{closure}(Object(Flarum\\Event\\PostWillBeSaved))\n#7 /home/fqye/projects/study/flarum/vendor/illuminate/events/Dispatcher.php(221): call_user_func_array(Object(Closure), Array)\n#8 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Core/Command/PostReplyHandler.php(99): Illuminate\\Events\\Dispatcher->fire('Flarum\\\\Event\\\\Po...')\n#9 [internal function]: Flarum\\Core\\Command\\PostReplyHandler->handle(Object(Flarum\\Core\\Command\\PostReply))\n#10 /home/fqye/projects/study/flarum/vendor/illuminate/bus/Dispatcher.php(202): call_user_func(Array, Object(Flarum\\Core\\Command\\PostReply))\n#11 [internal function]: Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}(Object(Flarum\\Core\\Command\\PostReply))\n#12 /home/fqye/projects/study/flarum/vendor/illuminate/pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Flarum\\Core\\Command\\PostReply))\n#13 [internal function]: Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Flarum\\Core\\Command\\PostReply))\n#14 /home/fqye/projects/study/flarum/vendor/illuminate/pipeline/Pipeline.php(102): call_user_func(Object(Closure), Object(Flarum\\Core\\Command\\PostReply))\n#15 /home/fqye/projects/study/flarum/vendor/illuminate/bus/Dispatcher.php(204): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))\n#16 /home/fqye/projects/study/flarum/vendor/illuminate/bus/Dispatcher.php(177): Illuminate\\Bus\\Dispatcher->dispatchNow(Object(Flarum\\Core\\Command\\PostReply), NULL)\n#17 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Core/Command/StartDiscussionHandler.php(84): Illuminate\\Bus\\Dispatcher->dispatch(Object(Flarum\\Core\\Command\\PostReply))\n#18 [internal function]: Flarum\\Core\\Command\\StartDiscussionHandler->handle(Object(Flarum\\Core\\Command\\StartDiscussion))\n#19 /home/fqye/projects/study/flarum/vendor/illuminate/bus/Dispatcher.php(202): call_user_func(Array, Object(Flarum\\Core\\Command\\StartDiscussion))\n#20 [internal function]: Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}(Object(Flarum\\Core\\Command\\StartDiscussion))\n#21 /home/fqye/projects/study/flarum/vendor/illuminate/pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Flarum\\Core\\Command\\StartDiscussion))\n#22 [internal function]: Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Flarum\\Core\\Command\\StartDiscussion))\n#23 /home/fqye/projects/study/flarum/vendor/illuminate/pipeline/Pipeline.php(102): call_user_func(Object(Closure), Object(Flarum\\Core\\Command\\StartDiscussion))\n#24 /home/fqye/projects/study/flarum/vendor/illuminate/bus/Dispatcher.php(204): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))\n#25 /home/fqye/projects/study/flarum/vendor/illuminate/bus/Dispatcher.php(177): Illuminate\\Bus\\Dispatcher->dispatchNow(Object(Flarum\\Core\\Command\\StartDiscussion), NULL)\n#26 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Api/Controller/CreateDiscussionController.php(72): Illuminate\\Bus\\Dispatcher->dispatch(Object(Flarum\\Core\\Command\\StartDiscussion))\n#27 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(97): Flarum\\Api\\Controller\\CreateDiscussionController->data(Object(Zend\\Stratigility\\Http\\Request), Object(Tobscure\\JsonApi\\Document))\n#28 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Api/Controller/AbstractCreateController.php(23): Flarum\\Api\\Controller\\AbstractSerializeController->handle(Object(Zend\\Stratigility\\Http\\Request))\n#29 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Handler/ControllerRouteHandler.php(53): Flarum\\Api\\Controller\\AbstractCreateController->handle(Object(Zend\\Stratigility\\Http\\Request))\n#30 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(69): Flarum\\Http\\Handler\\ControllerRouteHandler->__invoke(Object(Zend\\Stratigility\\Http\\Request), Array)\n#31 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\DispatchRoute->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#32 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\DispatchRoute), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#33 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#34 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#35 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\SetLocale->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#36 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\SetLocale), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#37 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#38 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(58): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#39 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\AuthenticateWithHeader->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#40 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\AuthenticateWithHeader), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#41 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#42 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(36): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#43 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\AuthenticateWithSession->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#44 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\AuthenticateWithSession), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#45 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#46 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(39): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#47 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\RememberFromCookie->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#48 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\RememberFromCookie), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#49 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#50 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/StartSession.php(48): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#51 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\StartSession->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#52 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\StartSession), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#53 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#54 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(33): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#55 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Api\\Middleware\\FakeHttpMethods->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#56 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Api\\Middleware\\FakeHttpMethods), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#57 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#58 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(31): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#59 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Http\\Middleware\\ParseJsonBody->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#60 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Http\\Middleware\\ParseJsonBody), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#61 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#62 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Api/Middleware/HandleErrors.php(45): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#63 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(212): Flarum\\Api\\Middleware\\HandleErrors->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#64 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Dispatch.php(88): Zend\\Stratigility\\Dispatch->dispatchCallableMiddleware(Object(Flarum\\Api\\Middleware\\HandleErrors), Object(Zend\\Stratigility\\Next), Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), NULL)\n#65 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/Next.php(160): Zend\\Stratigility\\Dispatch->__invoke(Object(Zend\\Stratigility\\Route), NULL, Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\Next))\n#66 /home/fqye/projects/study/flarum/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(111): Zend\\Stratigility\\Next->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response))\n#67 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/AbstractServer.php(55): Zend\\Stratigility\\MiddlewarePipe->__invoke(Object(Zend\\Stratigility\\Http\\Request), Object(Zend\\Stratigility\\Http\\Response), Object(Zend\\Stratigility\\NoopFinalHandler))\n#68 /home/fqye/projects/study/flarum/vendor/zendframework/zend-diactoros/src/Server.php(162): Flarum\\Http\\AbstractServer->__invoke(Object(Zend\\Diactoros\\ServerRequest), Object(Zend\\Diactoros\\Response), Object(Zend\\Stratigility\\NoopFinalHandler))\n#69 /home/fqye/projects/study/flarum/vendor/flarum/core/src/Http/AbstractServer.php(36): Zend\\Diactoros\\Server->listen(Object(Zend\\Stratigility\\NoopFinalHandler))\n#70 /home/fqye/projects/study/flarum/api.php(16): Flarum\\Http\\AbstractServer->listen()\n#71 {main}"
}
]
}