只有我一个人遇到这错误?大神我又来求解决方法了,看到这报错我内心很崩溃,代码都与教程一样呀。

file

有志者事竟成
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

@FMW
@史沟飞 终于找到原因了,感谢2位大神的耐心指导呀。是topReplies()这个方法,写少了一个p,刚重新检查一遍代码才发现。非常感谢您们的帮助!的确是collection方法第一个参数的问题。Thanks!! :clap: :clap: :clap: :blush:

5年前 评论
讨论数量: 15

请贴出详细的报错信息和相关代码

5年前 评论

@FMW
报错信息如下:
{"message":"Invalid argument supplied for foreach()","status_code":500,"debug":{"line":348,"file":"\/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php","class":"ErrorException","trace":["#0 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(348):
file

file

相关代码如下图:

file

file

file

实际上,就是不能正常获取话题的部分回复数据。教程中是能正常获取的,但是我的报错。
file

我测试接口时报错:

file

5年前 评论

你是不是id没传进去啊,postman参数那里id没打钩的?

5年前 评论

貌似你Model内 应该是 $this->replies->limit(5)

5年前 评论

@史沟飞 id传进去的了,在小程序里测试也是。不知道哪里出错了,哪里写错了。

5年前 评论

你这错误信息不完整啊,netword的response里面,全选一下,然后复制
@JasonLWF

5年前 评论

@FMW
完整版错误信息:

{"message":"Invalid argument supplied for foreach()","status_code":500,"debug":{"line":348,"file":"\/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php","class":"ErrorException","trace":["#0 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(348): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'Invalid argumen...', '\/home\/vagrant\/C...', 348, Array)","#1 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(235): League\Fractal\Scope->executeResourceTransformers()","#2 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/TransformerAbstract.php(162): League\Fractal\Scope->toArray()","#3 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/TransformerAbstract.php(131): League\Fractal\TransformerAbstract->includeResourceIfAvailable(Object(League\Fractal\Scope), Object(App\Models\Topic), Array, 'topReplies')","#4 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(435): League\Fractal\TransformerAbstract->processIncludedResources(Object(League\Fractal\Scope), Object(App\Models\Topic))","#5 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(411): League\Fractal\Scope->fireIncludedTransformers(Object(App\Transformers\TopicTransformer), Object(App\Models\Topic))","#6 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(346): League\Fractal\Scope->fireTransformer(Object(App\Transformers\TopicTransformer), Object(App\Models\Topic))","#7 \/home\/vagrant\/Code\/larabbs\/vendor\/league\/fractal\/src\/Scope.php(235): League\Fractal\Scope->executeResourceTransformers()","#8 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Transformer\/Adapter\/Fractal.php(103): League\Fractal\Scope->toArray()","#9 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Transformer\/Factory.php(77): Dingo\Api\Transformer\Adapter\Fractal->transform(Object(App\Models\Topic), Object(App\Transformers\TopicTransformer), Object(Dingo\Api\Transformer\Binding), Object(Dingo\Api\Http\Request))","#10 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Http\/Response.php(135): Dingo\Api\Transformer\Factory->transform(Object(App\Models\Topic))","#11 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Routing\/Router.php(554): Dingo\Api\Http\Response->morph('json')","#12 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Routing\/Router.php(523): Dingo\Api\Routing\Router->prepareResponse(Object(Dingo\Api\Http\Response), Object(Dingo\Api\Http\Request), 'json')","#13 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Http\/Middleware\/Request.php(126): Dingo\Api\Routing\Router->dispatch(Object(Dingo\Api\Http\Request))","#14 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(114): Dingo\Api\Http\Middleware\Request->Dingo\Api\Http\Middleware\{closure}(Object(Dingo\Api\Http\Request))","#15 \/home\/vagrant\/Code\/larabbs\/vendor\/barryvdh\/laravel-debugbar\/src\/Middleware\/InjectDebugbar.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#16 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Barryvdh\Debugbar\Middleware\InjectDebugbar->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#17 \/home\/vagrant\/Code\/larabbs\/vendor\/fideloper\/proxy\/src\/TrustProxies.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#18 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Fideloper\Proxy\TrustProxies->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#19 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TransformsRequest.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#20 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#21 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/TransformsRequest.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#22 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#23 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#24 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#25 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Middleware\/CheckForMaintenanceMode.php(46): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#26 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#27 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(102): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\Request))","#28 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Http\/Middleware\/Request.php(127): Illuminate\Pipeline\Pipeline->then(Object(Closure))","#29 \/home\/vagrant\/Code\/larabbs\/vendor\/dingo\/api\/src\/Http\/Middleware\/Request.php(103): Dingo\Api\Http\Middleware\Request->sendRequestThroughRouter(Object(Dingo\Api\Http\Request))","#30 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(149): Dingo\Api\Http\Middleware\Request->handle(Object(Dingo\Api\Http\Request), Object(Closure))","#31 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Routing\/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))","#32 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Pipeline\/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))","#33 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))","#34 \/home\/vagrant\/Code\/larabbs\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/Http\/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))","#35 \/home\/vagrant\/Code\/larabbs\/public\/index.php(55): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))","#36 {main}"]}}

5年前 评论

@史沟飞 测试了,也不是这个原因。

file

5年前 评论

@JasonLWF $this->replies()->limit(5) 应该返回的是一个QueryBuilder对象,你要返回一个Collection的话就$this->replies->limit(5)->get() 咯。

5年前 评论

@JasonLWF 说错了 应该是 $this->replies()->limit(5)->get()

5年前 评论

感觉是collection方法第一个参数的问题,改成$topic->topReplies()->get()试试

5年前 评论

@FMW
测试没有成功,还是报错。

file

@史沟飞

file

5年前 评论

@JasonLWF 你按楼上那人说的改

5年前 评论

@史沟飞 @FMW
已经这样修改来测试,但是,还是报错。 :sob: :sob:

file

file

5年前 评论

@FMW
@史沟飞 终于找到原因了,感谢2位大神的耐心指导呀。是topReplies()这个方法,写少了一个p,刚重新检查一遍代码才发现。非常感谢您们的帮助!的确是collection方法第一个参数的问题。Thanks!! :clap: :clap: :clap: :blush:

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!