Witam, mam problem z relacjami w Laravel.
Zrobiłem relację many to many
tabela users
i articles
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('last_name');
$table->string('nick');
$table->string('email')->unique();
$table->string('password');
$table->string('key_activate');
$table->integer('activate')->default(0);
$table->rememberToken();
$table->timestamps();
});
}
//tabela artykułów
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->integer('id_user');
$table->string('title');
$table->string('category_id');
$table->string('description');
$table->text('body');
$table->string('author');
$table->string('localization');
$table->string('tags');
$table->timestamps();
});
}
// i pivot
public function up()
{
Schema::create('user_article', function (Blueprint $table){
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('article_id')->unsigned();
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users');
$table->foreign('article_id')
->references('id')
->on('articles');
});
}
i teraz kilka pytań
- Czy jeśli dodaję rekord do tabeli
articles
(artykuł) w tabeli pośredniczącej powinien być dodawany jakiś rekord, tzn id artykułu i użytkownika? U mnie jest tak że artykuł jest dodawany bez problemu ale do pivotu nic nie jest dodawane. - Co mi daje taka relacje (bo tego do końca nie rozumiem), moim założeniem było to że dzięki niej dane użytkownika który dodaje artykuł (takie jak imię, nazwisko, nick) będą automatycznie pobierane z tabeli
users
a nie będę musiał ich jeszcze raz dodawać w tabeliarticles
jeszcze według dokumentacji dodałem funkcję w modeluUser
public function article(){
return $this->belongsToMany(Article::class);
}