当我尝试保存新联系人时,我发现1048 Column 'username' cannot be NULL
错误。很明显,这个错误的原因是username
的空值,但是我想在没有将列设置为NULL或检查username
POST数据是否为空的情况下使其工作清空,然后将其值设置为''
。
我已经看过很多例子,其中在保存到数据库之前,列未设置为NULL和/或数据未设置为''
。
或许我错了,我错过了什么?
我希望有人可以发表评论..
$contact = new Contact;
$contact->name = Input::get('name');
$contact->username = Input::get('username');
$nerd->save();
答案 0 :(得分:3)
为Input变量设置默认的非空值。
$contact = new Contact;
$contact->name = Input::get('name');
$contact->username = Input::get('username', false);
$nerd->save();
答案 1 :(得分:1)
将值0存储到用户名
$contact = new Contact;
$contact->name = Input::get('name');
$contact->username = Input::get('username', false);
$nerd->save();
答案 2 :(得分:0)
您可以使用模型事件(http://laravel.com/docs/eloquent#model-events)。
当联系人为creating
或updating
时,您可以测试用户名是否为空,并在将其写入数据库之前将其更改为''
。
答案 3 :(得分:0)
我遇到了同样的问题。视图页面中的“字段名称”和数据库的列名称无关紧要。我的问题是:
"Integrity constraint violation: 1048 Column 'MoneyMethod' cannot be null".
我的观看页面输入标记:
{!! Form::select("MoneyMethod", $MoneymethodInfo, null,["class"=>"form-control MoneyMethod required","id"=>"MoneyMethod"]) !!},
注意我的数据库表$table->string('MoneyMethod', 100);
中'MoneyMethod'的拼写拼写方法与查看页面相同但在我的控制器中
$riskfund->Moneymethod = Input::get('Moneymethod');
仔细查看“Moneymethod”的拼写与视图页面和数据库tabel列的不同之处。纠正拼写后,它现在正在运行。
因此,请检查表单,控制器,数据库表中“用户名”的拼写。