Laravel 透视表播种

Laravel 透视表播种,laravel,laravel-5,laravel-seeding,Laravel,Laravel 5,Laravel Seeding,我有两个模型Status和StatusCategory,它们有一个belongtomy关系。我有一个透视表status\u status\u category,其中有两个字段status\u id和status\u category\u id。我还将这两个字段作为主键 我已经为我的Status和StatusCategoryModel创建了模型工厂。当我尝试为它们设定种子时,终端输出中出现以下异常: 异常:此集合实例上不存在属性[id] 有关守则如下: $factory->defin

我有两个模型Status和StatusCategory,它们有一个belongtomy关系。我有一个透视表status\u status\u category,其中有两个字段status\u id和status\u category\u id。我还将这两个字段作为主键

我已经为我的Status和StatusCategoryModel创建了模型工厂。当我尝试为它们设定种子时,终端输出中出现以下异常:

异常:此集合实例上不存在属性[id]

有关守则如下:

    $factory->define(App\Status::class, function (Faker $faker) {
    return [
        'name' => $faker->word
    ];
});


$factory->define(App\StatusCategory::class, function (Faker $faker) {
    return [
        'name' => $faker->word
    ];
});

public function statuses() {
        return $this->belongsToMany( Status::class );
    }

public function statusCategories() {
        return $this->belongsToMany( StatusCategory::class );
    }

factory( Status::class, 30 )->create()->each( function ( $u ) {
            $u->statusCategories()->save( factory( StatusCategory::class )->make() );
        } );

老实说,如果有人能帮忙的话,我不知道该向哪里求助?谢谢

您可以创建
pivot
模型来为
pivot
表种子。以下是一个例子:

状态模型

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Status extends Model{
    protected $table='statuses';
    protected $fillable = [
        'something you want to fill'
    ];

    public function statusStatusCategories(){
        return $this->belongsToMany(StatusCategory::class);
    }
}
<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class StatusCategory extends Model{
    protected $table='status_categories';
    protected $fillable = [
        'something you want to fill'
    ];

    public function statuses(){
        return $this->belongsToMany(Status::class);
    }
}
namespace App;
use Illuminate\Database\Eloquent\Relations\Pivot;

class StatusStatusCategory extends Pivot
{
    protected $table='status_status_category';
    protected $fillable = [
        'status_id','status_category_id'
    ];

    public function status(){
        return $this->hasOne(Status::class, 'id', 'status_id');
    }

    public function statuscategory(){
    return $this->hasOne(StatusCategory::class, 'id', 'statuscategory_id');
    }
}
希望这有帮助