SQLSTATE[HY000]: General error: 1364 Field 'practice_name' doesn't have a default value
SQLSTATE[HY000]: General error: 1364 Field 'practice_name' doesn't have a default value
我是 Laravel 的初学者(这个项目是 5.4 版),但不明白为什么这不起作用。这是我的代码设置:
HTML 表格(表格方法="post"。动作为“/providers”):
<div class="form-group">
<label for="practice_name">Name:</label>
<input type="text" class="form-control" name="practice_name" id="practice_name">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
供应商型号:
protected $fillable = ['provider_name'];
供应商控制器:
public function store(Request $request)
{
Provider::create([
'practice_name' => request('practice_name')
]);
return redirect()->route('AllProviders');
}
我已经完成了转储和死亡:
dd($request->all());
这就是我得到的:
array:2 [
_token" => "wcCHLBR9hJhH8JS7vSc3vUjyLnjvg0Wvn8oRUnAh"
"practice_name" => "Test Provider"
]
我的网络路由是这样的:
Route::get('/pricing', 'ProtectedPagesController@pricing');
Route::get('/providers', 'ProvidersController@index')->name('AllProviders');
Route::get('/providers/create', 'ProvidersController@create')->name('CreateProvider');
Route::post('/providers', 'ProvidersController@store')->name('StoreProvider');
Route::get('/providers/{provider}', 'ProvidersController@show');
Route::get('/patients', 'PatientsController@index')->name('AllPatients');
Route::get('/patients/{patient}', 'PatientsController@show');
因此,我的 Dump and Die 显示我的控制器正在获取 provider_name 变量,但是当我执行 Create 命令时,它告诉我它没有看到该值。我确信这很简单,但是在花了最后一天半的时间查看 Whosebug(以及网络的其余部分)之后,我不断得到我已经尝试过的修复。我得到的错误是:
SQLSTATE[HY000]: General error: 1364 Field 'practice_name' doesn't have a default value (SQL: insert into providers
(updated_at
, created_at
) values (2018-04-09 13:45:45, 2018-04-09 13:45:45))
而且我不想让该字段在数据库中可以为空,因为该字段是必填字段。如果我使数据库可以为空,那么这个控制器就没有意义了——而且,我看不出这是如何解决这个问题的。表单值仍未读入 Create 函数。
希望有人能在这里帮助我。谢谢!
request('practice_name')
似乎没有 return 字段值。试试这个:
public function store(Request $request)
{
$requestValues = $request->all();
Provider::create([
'practice_name' => $requestValues['practice_name']
]);
return redirect()->route('AllProviders');
}
或
public function store(Request $request)
{
Provider::create([
'practice_name' => $request->input('practice_name')
]);
return redirect()->route('AllProviders');
}
您可以在以下 link 中阅读有关 "how to read request values" 的更多信息:
https://laravel.com/docs/5.4/requests
我是 Laravel 的初学者(这个项目是 5.4 版),但不明白为什么这不起作用。这是我的代码设置:
HTML 表格(表格方法="post"。动作为“/providers”):
<div class="form-group">
<label for="practice_name">Name:</label>
<input type="text" class="form-control" name="practice_name" id="practice_name">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
供应商型号:
protected $fillable = ['provider_name'];
供应商控制器:
public function store(Request $request)
{
Provider::create([
'practice_name' => request('practice_name')
]);
return redirect()->route('AllProviders');
}
我已经完成了转储和死亡:
dd($request->all());
这就是我得到的:
array:2 [
_token" => "wcCHLBR9hJhH8JS7vSc3vUjyLnjvg0Wvn8oRUnAh"
"practice_name" => "Test Provider"
]
我的网络路由是这样的:
Route::get('/pricing', 'ProtectedPagesController@pricing');
Route::get('/providers', 'ProvidersController@index')->name('AllProviders');
Route::get('/providers/create', 'ProvidersController@create')->name('CreateProvider');
Route::post('/providers', 'ProvidersController@store')->name('StoreProvider');
Route::get('/providers/{provider}', 'ProvidersController@show');
Route::get('/patients', 'PatientsController@index')->name('AllPatients');
Route::get('/patients/{patient}', 'PatientsController@show');
因此,我的 Dump and Die 显示我的控制器正在获取 provider_name 变量,但是当我执行 Create 命令时,它告诉我它没有看到该值。我确信这很简单,但是在花了最后一天半的时间查看 Whosebug(以及网络的其余部分)之后,我不断得到我已经尝试过的修复。我得到的错误是:
SQLSTATE[HY000]: General error: 1364 Field 'practice_name' doesn't have a default value (SQL: insert into
providers
(updated_at
,created_at
) values (2018-04-09 13:45:45, 2018-04-09 13:45:45))
而且我不想让该字段在数据库中可以为空,因为该字段是必填字段。如果我使数据库可以为空,那么这个控制器就没有意义了——而且,我看不出这是如何解决这个问题的。表单值仍未读入 Create 函数。
希望有人能在这里帮助我。谢谢!
request('practice_name')
似乎没有 return 字段值。试试这个:
public function store(Request $request)
{
$requestValues = $request->all();
Provider::create([
'practice_name' => $requestValues['practice_name']
]);
return redirect()->route('AllProviders');
}
或
public function store(Request $request)
{
Provider::create([
'practice_name' => $request->input('practice_name')
]);
return redirect()->route('AllProviders');
}
您可以在以下 link 中阅读有关 "how to read request values" 的更多信息: https://laravel.com/docs/5.4/requests