繁体   English   中英

Laravel 1048 列不能为 NULL 存储数据

[英]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 )。

creatingupdating联系人时,您可以测试用户名是否为空,并将其更改为''然后再将其写入数据库。

我也遇到过同样的问题。 视图页面中的“字段名称”和数据库的列名称无关紧要。 我的问题是:

"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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM