Php 在Laravel测试中对空成员函数save()的调用

Php 在Laravel测试中对空成员函数save()的调用,php,laravel,Php,Laravel,我正在上一门关于Codecourse的Laravel课程。到目前为止,我有一个类别模型: class Category extends Model { protected $fillable = [ 'name', 'slug', 'order' ]; public function scopeParents(Builder $builder){ $builder->whereNull('par

我正在上一门关于Codecourse的Laravel课程。到目前为止,我有一个类别模型:

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版本之间存在一些差异,但这似乎更为基本。

您的关系方法中缺少一个回报:

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

您的关系方法中缺少报税表:

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

看看这个:@SalimIbrogimov对我的问题毫无意义看看这个:@SalimIbrogimov对我的问题毫无意义当然这是一些简单而愚蠢的事情,就像我一样:|谢谢!当然,这是一些简单而愚蠢的事情,就像我一样:|谢谢!