Как создать ассоциацию (в сводной таблице) для отношения один-ко-многим Laravel? - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь создать связь между двумя моделями Post и PostVersion.Я думаю, что проблема может быть связана с соглашениями об именах, но я не уверен.Отношения между этими моделями определяются следующим образом:

Post

public function postVersion()
{
    return $this->hasMany(PostVersion::class);
}

PostVersion

public function post()
{
    return $this->belongsTo(Post::class);
}

Я создал таблицу с именем PostPostVersion, котораяимеет такую ​​структуру:

Schema::create('post_post_version', function (Blueprint $table) {
        $table->integer('post_id');
        $table->integer('post_version_id');
        $table->primary(['post_id', 'post_version_id']);
    });

После того, как я создал $post и $postVersion, я пытаюсь это сделать:

$post->postVersion()->associate($postVersion);

Но это не работает, и я делаюне получил ошибку.Как бы это исправить и создать связь между Post и PostVersion?

1 Ответ

0 голосов
/ 25 сентября 2018

Это не так.Вы должны создать 2 таблицы: posts & post_versions

В posts Таблица:

Schema::create('posts', function (Blueprint $table) {
    $table->increments('id');
    //
});

В post_versions Таблица:

Schema::create('post_versions', function (Blueprint $table) {
    $table->unsignedInteger('post_id');
    $table->string('version');
    //
});

Тогдапосле создания поста:

$post->postVersion()->save(new App\Comment(['version' => 'v1.0.0']));
...