首页 > 解决方案 > Laravel Eloquent 添加到表在增量列中返回 null

问题描述

这是我的桌子

1

我的错误似乎表明,当我尝试运行 insert eloquent 时,我的两个 id 列都给出了一个空值,这是问题所在:

SQLSTATE [23502]:非空违规:7 错误:关系“hms_bbr_category”的列“id”中的空值违反非空约束细节:失败行包含(null,null,Insert 1,Insert Desc,null,null,null ,空,空,空,空,空,空,空)。(SQL:插入“hms_bbr_category”(“category_name”,“category_description”)值(Insert 1,Insert Desc)返回“id”)

型号: HmsBbr类别

class HmsBbrCategory extends Model
{
    protected $table = 'hms_bbr_category';
    protected $primaryKey = 'id';
    public $timestamps = false;
}

路线:

Route::get('/bbr-category-configuration', function(){
    $addCategory = new App\Models\HmsBbrCategory;
    $addCategory->category_name='Insert 1';
    $addCategory->category_description='Insert Desc';
    $addCategory->save();
});

请注意,我一开始很简单,单击路由链接时会触发插入。

我尝试手动插入增量选项,但它似乎仍然无法正常工作。

$addCategory = id->id + 1;
$addCategory = category_id->category_id + 1;

感谢您的帮助,如果问题仍需要澄清,请随时告诉我详细说明

更新

错误:

Symfony\Component\Debug\Exception\FatalThrowableError
syntax error, unexpected '->' (T_OBJECT_OPERATOR)

标签: sqllaraveleloquentsql-insert

解决方案


根据您的表结构,这些列不能为空且没有默认值:

  • 类别ID
  • 由...制作
  • created_datetime

因此,当您插入/更新时,这些列不能保持为空。

所以在您的代码中,您没有提供任何这些值。

"id->id + 1" 也是错误的,因为你没有一个名为 id 的变量,即使你有,也不确定 "id + 1" 应该给你的 PK 在表中什么。

但是 id 有一个默认值,似乎它得到了 nextval() ,所以你在那里很好。

但是对于 category_id ,您需要传递一个整数 id ,如果您想获取表中的最后一个 category_id 并添加 1 作为新的,这不是您可以做到的。


推荐阅读