首页 > 解决方案 > 我应该如何将数据插入数据库

问题描述

我正在尝试使用自定义身份验证创建用户,并在发布数据时出现 500 错误。我猜我在用户模型上搞砸了。因为如果我尝试从表单返回输入,则返回成功,但如果我尝试将数据发布到数据库,则会收到 500 错误。ps .env 配置正确。 用户型号:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
   
    protected $fillable = [
        'name', 'password',
    ];

}

授权控制器:

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use App\Models\User;
    
    class AuthController extends Controller
    {
       
 //Login function
     function register(){
        return view('auth.register');
    }

        //Create user in DB
        function create(Request $request){
    
            //Validate requests
            $request->validate([
                'name'=>'required',
                'password'=>'required'
            ]);
    
             //Insert data into database
             $user = new User;
             $user->name = $request->name;
             $user->password = Hash::make($request->password);
             $save = $user->save();
    
            
        }
    
       
        }

路线:

**<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;



//Register Route
Route::get('/auth/register', [AuthController::class, 'register']);

Route::post('/auth/create', [AuthController::class, 'create'])->name('auth.create');**

标签: phpmysqllaravel

解决方案


检查是否有一些列不可为空或不能为空。

APP_DEBUG=true在文件中设置.env您会看到错误。

如果您使用的是默认用户表

$table->id();
$table->string('name'); // can't be empty
$table->string('email')->unique(); // can't be empty
$table->timestamp('email_verified_at')->nullable();
$table->string('password'); // can't be empty
$table->rememberToken();
$table->timestamps();

更新:

正如apurv-bhavsar所说,您必须use Illuminate\Support\Facades\Hash;在上课前添加

...
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash; // <<

class AuthController extends Controller
...

推荐阅读