到目前为止我有一个类别模型: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'); }
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报
0/150
提交
取消