i need to make the post accepts as many language as i need so i have tow models post
and language
in post model:
public function languages(){
return $this->belongsToMany(\App\Models\Language::class);
}
in my language model :
public function posts()
{
return $this->belongsToMany(\App\Models\Post::class);
}
post migration :
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->boolean('puplished')->default(false);
$table->bigInteger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->timestamps();
});
language migration :
Schema::create('languages', function (Blueprint $table) {
$table->id();
$table->string('text')->unique();
$table->string('value');
$table->timestamps();
});
i also created post_language_table migration to connect post and language:
Schema::create('post_language', function (Blueprint $table) {
$table->id();
$table->unsignedInteger('post_id');
$table->unsignedInteger('language_id');
$table->timestamps();
});
in my controller :
$langs = collect(json_decode($request->languages,true))->pluck('id');
$post = [];
$post['body'] = $request->body;
$post['title'] = $request->title;
$post['user_id'] = 1;
$new_post = \App\Models\Post::create($post);
$new_post->languages()->attach($langs);
but when i try to insert new record to tha database this error shows:
Illuminate\Database\QueryException
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.language_post' doesn't exist (SQL:
insert into `language_post` (`language_id`, `post_id`) values (1, 4), (3, 4), (4, 4))
so the problem is that for some reason the table name is exchanged !