[英]Laravel 1048 Column cannot be NULL on storing data
当我尝试保存新联系人时,我收到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();
为输入变量设置默认的非空值。
$contact = new Contact;
$contact->name = Input::get('name');
$contact->username = Input::get('username', false);
$nerd->save();
将值0存储到用户名
$contact = new Contact;
$contact->name = Input::get('name');
$contact->username = Input::get('username', false);
$nerd->save();
您可以使用模型事件( http://laravel.com/docs/eloquent#model-events )。
在creating
或updating
联系人时,您可以测试用户名是否为空,并将其更改为''
然后再将其写入数据库。
我也遇到过同样的问题。 视图页面中的“字段名称”和数据库的列名称无关紧要。 我的问题是:
"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'的拼写$table->string('MoneyMethod', 100);
货币的拼写方法与查看页面相同,但在我的控制器中
$riskfund->Moneymethod = Input::get('Moneymethod');
仔细查看,“ Moneymethod”的拼写与视图页面和数据库表列不同。 更正拼写后,它现在可以工作。
因此,请检查表单,控制器,数据库表中“用户名”的拼写。
如果某个字段未包含在模型的$fillable
属性中,也可能会发生此错误。 例如,使用以下代码:
class User extends Model {
protected $fillable = ["name", "email", "phone"];
}
$user = User::create([
"name" => "Joe Bloggs",
"email" => "joe@example.com",
"address" => "14 Sutton Drive, Dublin 13",
"phone" => "0866582753",
]);
address
值不会传递给数据库查询,可能会导致1048错误。 (如果address
列被声明为可为空,则不会抛出错误,但该列也永远不会被任何批量赋值方法更新。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.