为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 测试中对 null 调用成员函数 save()

在 Laravel 测试中对 null 调用成员函数 save()

PHP
汪汪一只猫 2023-07-01 15:37:11
到目前为止我有一个类别模型:class Category extends Model{       protected $fillable = [        'name',        'slug',        'order'    ];    public function scopeParents(Builder $builder){        $builder->whereNull('parent_id');    }    public function scopeOrder(Builder $builder, $direction = 'asc'){        $builder->orderBy('order', $direction);    }    public function children(){        $this->hasMany(Category::class, 'parent_id', 'id');    }}一个工厂:$factory->define(Category::class, function (Faker $faker) {    return [        'name' => $name = $faker->unique()->name,        'slug' => Str::slug($name)    ];});还有一个测试public function test_it_has_many_children()    {        $category = factory(Category::class)->create();        $category->children()->save(            factory(Category::class)->create()        );        $this->assertInstanceOf(Category::class, $category->children->first());    }但是,当我运行测试时,我得到:Call to a member function save() on null  at tests/Unit/Models/Categories/CategoryTest.php:14    10|     public function test_it_many_children()    11|     {    12|         $category = factory(Category::class)->create();    13|   > 14|         $category->children()->save(    15|             factory(Category::class)->create()    16|         );    17|     18|         $this->assertInstanceOf(Category::class, $category->children->first());是什么赋予了?该课程已经有几年的历史了,所以我认为 Laravel 版本之间存在一些差异,但这似乎更基本。
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您的关系方法中缺少返回:

public function children(){
    return $this->hasMany(Category::class, 'parent_id', 'id');
}


查看完整回答
反对 回复 2023-07-01
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信