Php 在Laravel测试中对空成员函数save()的调用
我正在上一门关于Codecourse的Laravel课程。到目前为止,我有一个类别模型: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
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对我的问题毫无意义当然这是一些简单而愚蠢的事情,就像我一样:|谢谢!当然,这是一些简单而愚蠢的事情,就像我一样:|谢谢!