Посевной стол - PullRequest
       12

Посевной стол

0 голосов
/ 20 мая 2018

У меня есть две модели Status и StatusCategory, которые имеют отношение ownToMany.У меня есть сводная таблица status_status_category с двумя полями status_id и status_category_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() );
        } );

Я не уверен, куда обратиться, если честно, если кто-нибудь может помочь?Спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете создать 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);
    }
}

Модель StatusCategory

<?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);
    }
}

Дляpivot

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');
    }
}

Надеюсь, это поможет.

...