为什么值一直是 null,再次简化了流程测试,还是 null

我想在每次留言和删除留言的时候统计留言的数量,然后更新到对应的字段里,之前发了一个问题,可能是流程没有表达清楚,回答的人很少,我现在简化一下问题

TestPsy.php

public function testreplies()
    {
        return $this->hasMany(TestReply::class);
    }

TestReply.php

public function testpsy()
    {
        return $this->belongsTo(TestPsy::class);
    }

controller

public function store(TestReplyRequest $request)
    {

        $testreply = TestReply::create($request->all());
        $testreply->testpsy->increment('reply_count', 1);
        session()->flash('success', '发布评论成功!');
        return redirect()->route('testreplies.show', $request->test_psy_id);
    }

$testreply->testpsy 这个就是null,为什么?$testreply是有值的

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 4

controller换了个写法可以了,但是到底是哪里的问题呢:

public function store(TestReplyRequest $request)
    {

        $testreply = TestReply::create($request->all());
        $testreply->testpsy->increment('reply_count', 1);
        session()->flash('success', '发布评论成功!');
        return redirect()->route('testreplies.show', $request->test_psy_id);
    }

修改为:

public function store(TestReplyRequest $request, TestPsy $testpsy)
    {
        .
        $testpsy->where('id',$request->test_psy_id)->increment('reply_count', 1);
        .
        .
    }
4年前 评论

因为你一直访问一个为null的数据

4年前 评论
 假设$testreply数据如下  
 id 1
 test_psy_id 32 

 $testreplay->testpsy  
 // 这个test_psys表不存在id = 32的数据  为null
4年前 评论
wongvio (楼主) 4年前

dump一下$testreplay看看结果是什么吧

4年前 评论
wongvio (楼主) 4年前

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