You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel插入4张图片触发QueryException错误求助

问题描述

使用WAMP服务器搭配Laravel框架开发,表单包含4张图片及其他数据。插入3张图片时数据库操作正常,但插入4张时触发Illuminate\Database\QueryException错误,已尝试修改php.ini但无效。

控制器代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\game;
use Illuminate\Support\Facades\Auth;

class GameController extends Controller
{ 
    public function store(Request $request)
    {        
        $lastGame = Game::latest()->first();
        $newIDG = $lastGame ? $lastGame->IDG + 1 : 1;
    
        $request->merge(['IDG' => $newIDG]);

        $request->validate([
            "title"         => ['required', 'string', 'unique:games'],
            "description"   => ['required', 'string'],
            "main_picture"  => ['required', 'image', 'mimes:jpeg,png,jpg'],
            'jeux_prix'     => ['required', 'numeric', 'min:20'], // 修正验证规则语法
            "category".     => ['required', 'string'],
            "download_path" => ['required', 'string'],
        ]);

        $imagePath = $request->main_picture->getPathname(); // 获取上传文件的临时路径
        $imageData = file_get_contents($imagePath); // 读取上传文件的内容        
    
        // 存储截图
        if (!is_array($request->file('screenshots')) || count($request->file('screenshots')) !== 3) {
            return redirect()->back()->withErrors(['screenshots' => '必须上传3张截图']);
        }

        foreach ($request->file('screenshots') as $screenshot) {
            $imagePath = $screenshot->getPathname(); // 获取上传文件的临时路径
            $imageData = file_get_contents($imagePath); // 读取上传文件的内容
            $imageDataArray[] = $imageData; // 将图片数据添加到数组
        }

        $data = $request->except(['main_picture', 'screenshots']);
    
        $data['etat_jeux'] = "inactif";
        $data['Screen1'] = $imageDataArray[0];
        $data['Screen2'] = $imageDataArray[1];
        $data['Screen3'] = $imageDataArray[2];
        $data['Main_picture'] = $imageData;
        $data['id'] = Auth::guard('creator')->id();
      
        game::create($data);

        return redirect()->route('creator.dashboard.home')->with('success', '游戏添加成功!');        
    }
}

迁移代码

public function up(): void
    {
        Schema::create('games', function (Blueprint $table) {
            $table->bigInteger('IDG')->primary();
            $table->string('Title')->unique();
            $table->string('Description')->nullable();
            $table->string('Category')->nullable();
            $table->integer('Jeux_Prix')->nullable();
            $table->date('date_publishing')->nullable();
            $table->longText('Main_Picture')->charset('binary')->nullable(); // 对应数据库LONGBLOB类型
            $table->longText('Screen1')->charset('binary')->nullable(); // 对应数据库LONGBLOB类型
            $table->longText('Screen2')->charset('binary')->nullable(); // 对应数据库LONGBLOB类型
            $table->longText('Screen3')->charset('binary')->nullable(); // 对应数据库LONGBLOB类型
            $table->string('Download_Path')->nullable();
            $table->string('etat_jeux')->nullable();
            $table->string('ECIN', 20)->nullable();
            $table->BigInteger('id')->nullable();
            $table->BigInteger('ID_Pack')->nullable();
            $table->foreign('id')->references('id')->on('creators')->onDelete('cascade');
            // $table->foreign('ID_Pack')->references('id')->on('packs')->onDelete('cascade');
            $table->timestamps();
        });
    }

内容的提问来源于stack exchange,提问作者mohsen salim

火山引擎 最新活动