请问在专题模块11-8使用scope完成专题详情页逻辑这里出现了错误怎么解决啊

来源:11-8 使用scope等完成专题详情页逻辑

ziruiding

2019-04-12

错误提示:

(1/1) FatalThrowableError
Call to a member function getRelationExistenceCountQuery() on null
in QueriesRelationships.php line 208
at Builder->withCount(array('postTopics'))
in Model.php line 1374
at Model->__call('withCount', array('postTopics'))
in Model.php line 1386
at Model::__callStatic('withCount', array('postTopics'))
in TopicController.php line 14
at TopicController->show(object(Topic))
at call_user_func_array(array(object(TopicController), 'show'), array('topic' => object(Topic)))
in Controller.php line 55
at Controller->callAction('show', array('topic' => object(Topic)))
in ControllerDispatcher.php line 44
at ControllerDispatcher->dispatch(object(Route), object(TopicController), 'show')
in Route.php line 203
at Route->runController()
in Route.php line 160
at Route->run()
in Router.php line 572
at Router->Illuminate\Routing\{closure}(object(Request))
in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in VerifyCsrfToken.php line 65
at VerifyCsrfToken->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in Pipeline.php line 102
at Pipeline->then(object(Closure))
in Router.php line 574
at Router->runRouteWithinStack(object(Route), object(Request))
in Router.php line 533
at Router->dispatchToRoute(object(Request))
in Router.php line 511
at Router->dispatch(object(Request))
in Kernel.php line 176
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request))
in Pipeline.php line 102
at Pipeline->then(object(Closure))
in Kernel.php line 151
at Kernel->sendRequestThroughRouter(object(Request))
in Kernel.php line 116
at Kernel->handle(object(Request))
in index.php line 53
at require_once('/Users/dingzirui/Documents/zirui/codes/laravel54/public/index.php')
in server.php line 21

源代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Topic;

class TopicController extends Controller
{
    // 专题详情页
    public function show(Topic $topic)
    {
        // 带文章数的专题
        $topic = Topic::withCount('postTopics')->find($topic->id);

        // 专题的文章列表,按照创建时间倒序排列,前十个
        $posts = $topic->posts()->orderBy('created_at','desc')->take(10)->get();


        return view('topic/show',compact('topic','posts'));
    }

    // 投稿
    public function submit(Topic $topic)
    {
        return;
    }
}

写回答

1回答

轩脉刃

2019-04-15

错误像是你这个topic->id 数据库中是没有的。所以从null里面获取postTopics的数量报错。你确定你这个topicid在数据库中存在么

0
1
趙花花
按课程写的话,topics 专题 这个表是存在数据的,但是中间表post_topics不存在数据就会报错 ,这个有处理办法么,假如数据不存在 但是专题存在 ,展示专题页面就好了 其他相关的没有就不展示
2019-09-17
共1条回复

Laravel快速开发简书

Laravel最新特性结合Mysql异步消息队列、ElasticSearch搜索引擎、Debugbar调试利器开发简书

1218 学习 · 613 问题

查看课程