更新 `best_answer_id` SQL 不报错

public function it_knows_if_it_is_the_best()
    {
        // create  Answer
        $answer = create(Answer::class);            

        $this->assertFalse($answer->isBest());

        $answer->question->update(['best_answer_id' => $answer->id]);

        $this->assertTrue($answer->isBest());
    }

这里一直返回的是

There was 1 failure:

1) Tests\Unit\AnswerTest::it_knows_if_it_is_the_best
Failed asserting that false is true.

/var/www/laravel/larazhihu/tests/Unit/AnswerTest.php:27

并不会报 SQL 错误,无论 column 存在与否, $answer->question->update(['best_answer_id' => $answer->id]); 一直返回 true.
查了一下,似乎是因为使用了 $guarded=['id'] 导致在不存在的 column 并不会报错,而是不执行语句。反之使用 $fillable=['best_answer_id'] 会导致 SQL 错误。
请问下 按教程里的代码走 如何让 update 报 SQL 错误?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
洛未必达

贴一下 Laravel 的版本,与教程的一致吗?

3年前 评论

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