Я озадачен использованием Pivot Table на Laravel. Я прочитал несколько подобных постов без успеха.
Я полный новичок. Вот сообщение, которое у меня есть.
SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец 'blogpost_post_id' в 'списке полей' (SQL: вставить в blogpost_blogtag
(blogpost_post_id
, blogtag_tag_id
) значения (1, 2))
Проблема довольно проста. Laravel добавляет имя таблицы перед именем столбца, и я не могу понять, почему.
Laravel вызывает blogpost_post_id
, тогда как имя столбца просто post_id
Laravel вызывает blogtag_tag_id
, тогда как имя столбца просто tag_id
Модели
Blogpost.php
public function blogtags(){
return $this->belongsToMany('App\Blogtag');
}
Blogtag.php
public function blogposts(){
return $this->belongsToMany('App\Blogpost');
}
I've also declared in the **Postcategory.php** model the following
public function blogposts()
{
return $this->hasmany('App\Blogpost');
}
Таблицы:
таблица блога
public function up()
{
Schema::create('blogposts', function (Blueprint $table) {
$table->increments('post_id');
$table->integer('post_editorid')->default(0);
$table->string('post_title');
$table->string('post_slug');
$table->text('post_content');
$table->integer('post_categoryid');
$table->boolean('post_banned')->default(0);
$table->integer('post_moderatorid')->default(0);
$table->dateTime('post_bandate')->nullable($value = true);
$table->string('post_picture')->nullable($value = true);
$table->string('post_extlink')->nullable($value = true);
$table->softDeletes();
$table->timestamps();
});
}
Таблица подкатегорий
public function up()
{
Schema::create('postcategories', function (Blueprint $table) {
$table->increments('cat_id');
$table->string('cat_name')->unique();
$table->timestamps();
});
}
Таблица блогов
public function up()
{
Schema::create('blogtags', function (Blueprint $table) {
$table->increments('tag_id');
$table->string('tag_kw')->unique();
$table->timestamps();
});
}
И таблица PIVOT
публичная функция up ()
{
Schema::create('blogpost_blogtag', function (Blueprint $table) {
$table->increments('id');
$table->integer('post_id');
$table->integer('tag_id');
$table->timestamps();
});
}
И контроллер (магазин)
магазин публичных функций (Request $ request)
{
// дд ($ request-> все ());
$this->validate($request, [
'posttitle' => 'required|min:4|max:255|string',
'postcontent' => 'required|min:30|max:3000|string',
'postpict' => 'nullable|image',
'post_categoryid' => 'required',
'postlink' => 'nullable|max:255|string',
'blogtags' => 'nullable',
]);
if ($request->hasFile('postpict')) {
$postpict = $request->postpict;
$postpict_new_name = time().$postpict->getClientOriginalName();
$postpict->move('uploads/postpicts/', $postpict_new_name);
$picturl = 'uploads/postpicts/' . $postpict_new_name;
}else{
$picturl = NULL;
}
$blogpost = Blogpost::create([
'post_title' => $request->posttitle,
'post_content' => $request->postcontent,
'post_categoryid' => $request->post_categoryid,
'post_picture' => $picturl,
'post_extlink' => $request->postlink,
'post_slug' => str_slug($request->posttitle)
]);
$blogpost->blogtags()->attach($request->blogtags);
$messageposttitle = $request->posttitle;
$message = $messageposttitle . ' is successfully stored';
$title = '';
Toastr::success($message, $title, ["positionClass" => "toast-top-center"]);
return redirect()->back();
}
$ blogpost-> blogtags () -> присоединять ($ request-> blogtags);
Я буду рад узнать о допущенной мной ошибке.