想使用 laravel 将 pdf 文件上传到 mysql

你好我是 laravel 的新手。出于我的项目目的,我有一个功能可以在数据库中上传 pdf 文件。但数据未存储在数据库中。


这是我尝试的代码=


控制器-


<?php


namespace App\Http\Controllers;


use Illuminate\Http\Request;

use Auth;

use DB;

class PostsController extends Controller

{

    public function index()

    {

        $id = Auth::id();

        $user = DB::table('users')->find($id);

        return view('posts', ['user' => $user]);

    }

    public function __construct()

    {

        $this->middleware('auth');

    }



    public function store()

    {

        //dd(request()->all());

        $data = request()->validate(['pcaption' => 'required']);

         Auth()->user()->posts()->create($data);

         dd(request()->all());


}

}

模型-


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class post extends Model

{

    protected $guarded = [];


    public function user()

    {

    return $this->belongsTo(User::class);

    }


}

来自本地主机的错误-


Illuminate\Database\QueryException

SQLSTATE[HY000]: General error: 1364 Field 'post' doesn't have a default value (SQL: insert into `posts` (`pcaption`, `user_id`, `updated_at`, `created_at`) values (bh, 3, 2020-04-17 17:42:53, 2020-04-17 17:42:53))

这意味着发布数据没有保存在数据库中。哪里是我的错


紫衣仙女
浏览 88回答 2
2回答

繁花如伊

在您的数据库表帖子列中选择 as Not Null。出于这个原因,您会收到此错误。在您的迁移文件中,您应该使用它来解决您的问题public function up(){&nbsp; &nbsp; Schema::create('posts', function (Blueprint $table) {&nbsp; &nbsp; &nbsp; &nbsp; ....&nbsp; &nbsp; &nbsp; &nbsp; $table->text('post')->nullable();&nbsp; &nbsp; &nbsp; &nbsp; $table->timestamps();&nbsp; &nbsp; });}

翻阅古今

不,这意味着您的“posts”表有一个名为“post”的列,并且该列没有默认值并且不接受假定为 null。所以你可以这样解决这个问题:create&nbsp;table&nbsp;posts&nbsp;(&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;post&nbsp;varchar(10000)&nbsp;DEFAULT&nbsp;''&nbsp;not&nbsp;null, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... );
打开App,查看更多内容
随时随地看视频慕课网APP