Предположим, у меня есть один продукт, и у него много изображений.Я использовал Dropzone JS, и если я загружаю изображения, то все в порядке, но если вы хотите сохранить с product_id, то он передает нулевое значение.без передачи какого-либо значения его работает нормально.так как я могу хранить как имя изображения, так и product_id одновременно?Вот мой контроллер:
public function store(Request $request)
{
if ($request->hasFile('file')){
$file= $request->file;
$fileName = $file->getClientOriginalName();
$fileName = time() .'-'.$fileName;
$productImage = public_path("uploads/products/{$fileName}"); // get previous image from folder
if (File::exists($productImage)) { // unlink or remove previous image from folder
unlink($productImage);
}
$file->move('public/uploads/products/',$fileName);
$image = new Image();
$image->image = $fileName;
$image->product_id = $request->product_id;
$image->save();
// return redirect()->route('product.index');
}
}
Схема базы данных:
Schema::create('images', function (Blueprint $table) {
$table->increments('id');
$table->string('image');
$table->integer('product_id')->unsigned()->nullable();
$table->foreign('product_id')->references('id')->on('products')->onUpdate('cascade')->onDelete('cascade');
$table->timestamps();
});
Ошибка:
сообщение: "SQLSTATE [23000]: нарушение ограничения целостности: 1452Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (eshop
. images
, CONSTRAINT images_product_id_foreign
FOREIGN KEY (product_id
) ССЫЛКИ products
(id
) ВКЛSQL: вставить в значения images
(image
, product_id
, updated_at
, created_at
) (1538483231-blog-1-3.png, 123, 2018-10-02 12:27:11, 2018-10-02 12:27:11)) "