I have some migrations books,users,categories,authors and files
i made a pivot table for books and files,"book_file" table:
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();
});
}
and Book model code:
public function files(){
return $this->belongsToMany(File::class,'files','book_files');
}
File model code:
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');
}
files uploading in database works true but my pivot table (book_file) doesn't change! what is wrong? I am beginner in laravel,please help,thanks.
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire