[英]How to check if submitted data to a database is unique with Laravel form validation?
我是 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
方法中刪除附加數組[]
因為$request
object 的only
方法返回一個數組。
auth()->attempt($request->only('email', 'password'));
像這樣試試
'email' => [
'required',
'email',
'max:255',
'unique:users'
],
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.