topic->user->name报错

topic->user->name报错

http://img1.sycdn.imooc.com//climg/5b4e680600013d4417770839.jpg

html

<div class="panel-body remove-padding-horizontal">
 <ul class="list-group row thread-list">
 <?php foreach($topics as $topic) :?>
   <li class="list-group-item media " style="margin-top: 0px;">
     <span class="badge badge-reply-count"> </span>
     <div class="avatar pull-left">
       <a href="post.html">
         <img class="media-object img-thumbnail avatar-48" alt="imooc" src="__IMG__/avatar_small.jpg"/>
       </a>
     </div>
     <div class="infos">
       <div class="media-heading">
           <i class="fa fa-thumb-tack text-danger"></i>
           <a href="<?=url('topic/detail');?>?id=<?=$topic->id;?>" title="<?=$topic->title;?>">
             <?=$topic->title;?>
           </a>
       </div>
       <div class="media-body meta">
         <a>
           <span class="fa fa-thumbs-o-up"> <?=$topic->praises_count;?> </span>
         </a>
         <span> • </span>
         <?php $categorys = getCategoryNames($topic->category_id);?>
         <span><?=$categorys[0];?></span>
         <span> / </span>
         <span><?=$categorys[1];?></span>
         <span> • </span>

         <a><?=$topic->user->name;?></a>
         <span> • </span>
         <span class="timeago" data-toggle="tooltip" data-placement="top" title="<?=date('Y-m-d H:i:s', $topic->created_at);?>">
           <?=date('Y-m-d H:i:s', $topic->created_at);?>
         </span>
       </div>
     </div>
   </li>
 <?php endforeach;?>
 </ul>
</div>


model

public static function getTopics()
{
   return self::withCount(['praises'])->select();
}

controller

$topics = TopicModel::getTopics();
   $this->assign([
       'user'   => session('user'),
       'topics' => $topics,
       'page'   => $pageInfo['page'],
       'showPages' => $pageInfo['showPages'],
       'pageNum'   => $pageInfo['pageNum'],
   ]);
   echo $this->fetch('index');
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
guly 2018-07-18 16:39:42

你好,通过测试建议参考如下:

model\topic.php下

public static function getTopics()
{
    return self::withCount(['praises'])->select();
}

改为:

public static function getTopics($page, $limitNum, $sortInfo) {
  $sortInfo['field'] = $sortInfo['field'] ? $sortInfo['field'] : 'created_at';
  $sortInfo['order'] = $sortInfo['order'] ? $sortInfo['order'] : 'desc';
   return Topic::withCount(['replies', 'praises'])
    ->where(['is_delete' => 0])
    ->page($page, $limitNum)
    ->order($sortInfo['field'], $sortInfo['order'])
    ->select();
}

controller\topic.php下 

index()方法改为:

public function index(){
    $getData = input('get.');
    $page = isset($getData['page']) ? $getData['page'] : 1;
    $field = isset($getData['field']) ? $getData['field'] : '';
    $order = isset($getData['order']) ? $getData['order'] : '';
    $sortInfo = ['field' => $field, 'order' => $order];
    $pageInfo = TopicModel::getPageInfo($page, config('limitNum'));
    $cacheName = 'index'.$page.$field.$order;
    if (cache($cacheName)) {
        $topics = cache($cacheName);
    } else {
        $topics = TopicModel::getTopics($pageInfo['page'], config('limitNum'), $sortInfo);
        cache($cacheName, $topics, 20);
    }
    $this->assign([
        'topics' => $topics,
        'user' => session('user'),
        'page' => $pageInfo['page'],
        'pageNum' => $pageInfo['pageNum'],
        'showPages' => $pageInfo['showPages'],
        'hotTags' => TopicTagModel::getHotTags(config('hotTagNum')),
    ]);
    echo $this->fetch('index');
}

如果解决您的问题请采纳,祝学习愉快!

  • 提问者 qq_追梦少年_14 #1
    老师,改了代码以后,显示没有assign的时候报错没有$topics。 有了$topics = TopicModel::getTopics();以后又报getTopics(),少参数,能不能尽量不要改原来的代码, 还有就是那个get()的memcached.php的缓存,一直报错, 能不能提供一个途径,我直接把源码交给你,直接看看,到底错在哪里了?
    2018-07-18 19:04:25
  • 提问者 qq_追梦少年_14 #2
    我想如果可能还是用原来项目里面的代码,可以吗?希望老师,能帮我找出错误来。
    2018-07-18 19:09:46
  • guly 回复 提问者 qq_追梦少年_14 #3
    你好,建议自己查看老师指出代码,下载老师课堂源码调试,祝学习愉快!
    2018-07-19 08:57:54
guly 2018-07-18 10:19:14

你好,该报错信息提示为没有关联数据导致获取属性报错的 ,建议打印数据结果查看数据值,进行调试,祝学习愉快!

  • 提问者 qq_追梦少年_14 #1
    直接打印,还是报该方法下面的user属性没有哪个错误,我在detail里面的作者展示也是写的$topic->user->name,那个对于的作者就能显示,model里面的user方法我也检查了,没有发现为什么到了index方法这里就不行了?作业我已经交过两次了,请问老师,怎么把源码包发给你?
    2018-07-18 15:55:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师