У меня есть несколько книг по миграции, пользователей, категорий, авторов и файлов
я создал сводную таблицу для книг и файлов, таблицу "book_file":
public function up()
{
Schema::create('book_files', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('book_id');
$table->unsignedInteger('file_id');
$table->foreign('book_id')
->references('id')
->on('books')
->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('file_id')
->references('id')
->on('files')
->onDelete('cascade')
->onUpdate('cascade');
$table->timestamps();
});
}
и код модели книги:
public function files(){
return $this->belongsToMany(File::class,'files','book_files');
}
Код модели файла:
protected $fillable = [
'name',
];
public function books()
{
return $this->belongsTo(Book::class);
}
BookController:
public function create()
{
$categories = Category::all();
$authors = Author::all();
$files= File::all();
return view('books.create', compact('categories','authors','files'));
}
public function store(Request $request)
{
$this->validate($request,
[
'name'=>'required|string|max:256',
'pages'=>'required|integer|numeric',
'ISBN'=>'required|string|numeric',
'price'=>'required|integer|numeric',
'published_at'=>'required|date|date',
'file'=>'required',
]
);
if ($request->hasFile('file')) {
$filename = $request->file('file')->getClientOriginalName();
$request->file->storeAs('public', $filename);
$file = new File;
$file->name = $filename;
$file->save();
}
$book = Auth::User()->books()->create($request->except('_token'));
$book->categories()->attach($request->get('category_id'));
$book->authors()->attach($request->get('author_id'));
$book->files()->attach($request->get('file_id'));
return redirect('/books');
}
загрузка файлов в базу данных работает верно, но моя сводная таблица (book_file) не работаетменять!что случилось?Я новичок в Laravel, пожалуйста, помогите, спасибо.