SQLSTATE [HY000]:常规错误:1364字段'practice_name'没有默认值

时间:2018-04-09 13:49:30

标签: php laravel-5.4

我是Laravel的初学者(这个项目是版本5.4),但是无法理解为什么这不起作用。这是我的代码设置:

HTML表单(表单方法=“发布”。操作是“/ 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'];

ProvidersController:

    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和Die显示我的控制器正在获取provider_name变量,但是当我执行Create命令时,它告诉我它没有看到值。我确信这很简单,但是在花了最后一天半看着StackOverflow(以及网络的其余部分)之后,我一直在修复我已经尝试过的问题。我得到的错误是:

  

SQLSTATE [HY000]:常规错误:1364字段'practice_name'没有默认值(SQL:插入providersupdated_atcreated_at)值(2018- 04-09 13:45:45,2018-04-09 13:45:45))

我不想让该字段在数据库中可以为空,因为该字段是必需的。如果我让数据库可以为空,那么这个控制器是没有意义的 - 而且,我不知道如何解决这个问题。表单值仍未被读入Create函数。

希望有人能在这里帮助我。谢谢!

1 个答案:

答案 0 :(得分:0)

request('practice_name')似乎没有返回字段值。试试这个:

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');
}

您可以在以下链接中阅读有关“如何读取请求值”的更多信息: https://laravel.com/docs/5.4/requests