php - 如何使用 Laravel 表单验证检查提交到数据库的数据是否唯一?
问题描述
我是 Laravel 的新手,我遇到了一个问题,当我检查提交的数据是否对数据库来说是唯一的时,我得到了这个错误:
Illuminate\Database\QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `users` where `0` in (tom@heekdevelopment.comasd, asd) limit 1)
http://127.0.0.1:8000/register
这是我在 Laravel 中的代码:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class RegisterController extends Controller
{
public function index(){
return view('auth.register');
}
public function store(Request $request){
$this->validate($request, [
'name' => [
'required',
'max:255'
],
'username' => [
'required',
'max:255',
'unique:users,username'
],
'email' => [
'required',
'email',
'max:255',
'unique:users,email'
],
'password' => [
'required',
'confirmed'
]]);
User::create([
'name' => $request->name,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password)
]);
auth()->attempt([$request->only('email', 'password')]);
return redirect()->route('dashboard');
}
}
我认为unique
参数检查了一个值是否唯一。
它在技术上确实会检查它,但是当我提交一个唯一的新值时它会引发错误,它确实会输入到数据库中。
如何解决这个问题?
解决方案
[]
您应该从attempt
方法中删除附加数组,因为对象的only
方法$request
返回一个数组。
auth()->attempt($request->only('email', 'password'));
推荐阅读
- hover - 我的悬停不再起作用了..我不知道为什么:(
- ios - 如何将 Firestore db 用于多语言应用程序?
- file - FFmpeg 批处理文件 - 将单个集合文件与另一组文件中的随机选择相结合
- android - 在android studio中的真实设备中运行应用程序时按钮不起作用
- php - 无法在 php 中解码 JSON 文件
- graphql - graphql JS中@relayhash值有什么用
- c# - 如何从 Postman To WebApi 获取表单数据
- apache-flink - 如何在远程环境中使用保存点运行 Flink 作业?
- java - 包装类对象初始化如何工作?
- c# - IdentityServer4 ASP.NET Core Identity 不会重定向回客户端