gpt4 book ai didi

php - laravel orm : not converting null values to column default value of column type in 5. 4 版本

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:18 25 4
gpt4 key购买 nike

我以前使用 laravel 5.2 现在我已经升级到 5.4我通常在将对象发送到数据库之前使用我的验证来 pupolate 对象

$validation_rules  = ['title'=>'required' , 'number'=>'present|int'];
// do validation

$obj = new Object();
foreach($validation_rules as $k=>$v )
$obj->$k = $request->input($k);

现在,如果用户不发送 number 参数,它在我的对象的 nnumer 属性中将为 null 或 false ...在旧版本中,它会自动更改为该列的默认值。 .. 例如,如果我在插入此对象时将 number 列类型设置为 int,则 number 列将为 0

但现在这并没有发生,而是我得到了这个错误

 Integrity constraint violation: 1048 Column 'number' cannot be null

顺便说一句,严格模式已关闭

请注意我知道所有关于 nullable 的知识,我不想让那些字段可以为 null 这就是重点......它是关于在字段不可为 null 时自动将 null 值转换为默认列类型值

最佳答案

在 Laravel 5.4 中,->default(0) 的概念与 Laravel 5.2 不同。在 5.4 中,默认值仅在您不传递任何内容时才起作用,所以当您传递

$obj->$k = $request->input($k);

如果 $request->input($k)null,那么您就是将 null“插入”到一个列中不可为空,这会导致错误。

所以看来您必须使数据库中的列可为空并在您的 Controller 中进行检查:

$obj->$k = $request->input($k) ? $request->input($k) : 0;

关于php - laravel orm : not converting null values to column default value of column type in 5. 4 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43881895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com