菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
42
0

7.3. 发表回复 Web 开发实战进阶 ( Laravel 6.x ) 字段缓存为空

原创
05/13 14:22
阅读数 376

app\Observers\ReplyObserver.php 中按照课程所写

<?php

namespace App\Observers;

use App\Models\Reply;

class ReplyObserver
{
    public function creating(Reply $reply)
    {
        $reply->content = clean($reply->content, 'user_topic_body');
    }

    public function created(Reply $reply)
    {
        // $reply->topic->increment('reply_count', 1);
        $reply->topic->reply_count = $reply->topic->replies->count();
        $reply->topic->save();
    }
}

打印$reply可以获取数据

7.3. 发表回复 |《L02 Laravel 教程 - Web 开发实战进阶 ( Laravel 6.x )》字段缓存数据为空

但是无法获取 $reply->topic 下数据

7.3. 发表回复 |《L02 Laravel 教程 - Web 开发实战进阶 ( Laravel 6.x )》字段缓存为空

直接使用 $reply->topic->replies->count(); 会报错

7.3. 发表回复 |《L02 Laravel 教程 - Web 开发实战进阶 ( Laravel 6.x )》字段缓存数据为空

已经检查 Topic Model 和 Reply Model,代码同教程,请问有其他人遇到这个问题吗

以下为现在的模型类代码:

Reply

<?php

namespace App\Models;

class Reply extends Model
{
    protected $fillable = ['content'];

    public function topic()
    {
        return $this->belongsTo(Topic::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Topic

<?php

namespace App\Models;

class Topic extends Model
{
    protected $fillable = [
        'title', 'body', 'category_id', 'excerpt', 'slug'
    ];

    public function replies()
    {
        return $this->hasMany(Reply::class);
    }

User

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Auth\MustVerifyEmail as MustVerifyEmailTrait;

class User extends Authenticatable implements MustVerifyEmailContract
{
    use Notifiable, MustVerifyEmailTrait;

    protected $fillable = [
        'name', 'email', 'password','introduction','avatar'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    //新增用户模型与话题模型的关联
    public function topics(){
    return $this->hasMany(Topic::class);
    }

    //新增因控制器反复调用的获取用户id方法
    public function isAuthorOf($model){
    return $this->id == $model->user_id;
    }

    public function replies()
    {
        return $this->hasMany(Reply::class);
    }
}

发表评论

0/200
42 点赞
0 评论
收藏
为你推荐 换一批