我有一个项目将有8种不同的形式,所有形式都更新相同的用户'我的数据库中的表。我有用户身份验证工作,它使我的localhost mysql数据库中的表中的用户。但是,当我开始更新表时,我不断收到错误,例如电子邮件不是唯一的,或者在RouteDependencyResolverTrait.php第57行中出现http错误或ReflectionException:内部错误:无法检索默认值。 我已经尝试了所有内容,我的创建工作但它创建了一个新行,并且不会更新用户登录的现有行。
我只是Laravel 5.4的新手并且已经完成了所有的Laracasts,所以我绝对不知所措。
有没有人有任何想法或知道如何解决或更好地重组?如果我错过了什么,请告诉我。我一直试图让它工作2天。
Basics.php
<?php
namespace App;
class Basics extends Model
{
public $table = "users";
protected $fillable = [
'family_name',
'given_names'
];
}
BasicsController.php
class BasicsController extends Controller
{
public function index()
{
$user = \Auth::user();
return view('/details/basics', compact('user'));
}
public function update(Request $request, $id)
{
$basics = Basics::find($id);
$basics->family_name = $request->input('family_name');
$basics->given_names = $request->input('given_names');
$basics->save();
return redirect("/details/basics");
}
}
basics.blade.php
@extends ('layouts/app')
@section ('content')
{{--Do @includes for all form components with the components file--}}
@include ('layouts/header')
<main class="main">
<form action="/details/basics" method="POST">
<input type="hidden" name="_method" value="PATCH">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<fieldset>
<label>Family name</label>
<input type="text" name="family_name" placeholder="Family name" value="{{ old('family_name') }}" />
</fieldset>
<fieldset>
<label>Given names</label>
<input type="text" name="given_names" placeholder="Given names" value="{{ old('given_names') }}" />
</fieldset>
<button type="submit" value="Save" name="save" class="button button-primary button-wide">Save</button>
</form>
</main>
@endsection
web.php
Route::get('/', function () {
return view('welcome');
});
// Authentication Routes
Auth::routes();
Route::get('/logout', 'Auth\LogoutController@destroy');
Route::get('/home', 'DashboardController@index');
Route::get('/dashboard', function () {
$user = Auth::user();
return view('dashboard', compact('user'));
});
// Eligibility Assessments
Route::get('/assessment/student', 'AssessmentController@index');
Route::post('/assessment/results', 'AssessmentController@store');
// Details
Route::get('/details/basics', 'BasicsController@index');
Route::patch('/details/basics', 'BasicsController@update');
答案 0 :(得分:0)
您需要在帖子请求中添加一条规则,该规则会在更新模型时排除电子邮件字段。这就是为什么你收到电子邮件不是唯一的错误。虽然您没有发布电子邮件字段,但仍然保存方法正在执行此操作。尝试使用post而不是patch。仅用于Route.php中的调试目的