0

我有一个用户可以在视图中添加或删除的动态表单元素(比如书名的名称)。创建轻而易举,因为当请求到达控制器以保存到数据库时,所有书籍模型都是新的。在更新过程中,如果所有书籍模型都保持不变,修改或添加新模型,我可以完成updateOrCreate所有三个案例都满足的任务。

现在的问题是当用户选择在视图中移除一本书时;Laravel 尝试保存已删除的模型:

SQLSTATE [23000]:违反完整性约束:1048 列 'column_name' 不能为空

有没有一种updateCreateOrDelete方法或类似的方法?我不想删除数据库中的所有书籍并重新创建它们,因为这是懒惰的,如果系统具有审计系统,则不建议这样做。

基本上我有一个可以添加或删除的输入数组:

  1. 如果有任何更新,那么只需更新他们的数据库条目;
  2. 如果n添加,则创建这些新n值;
  3. 如果m被删除,m则从数据库中删除这些值
4

2 回答 2

2

你需要注意你的约束。如果有依赖于它的东西,Laravel 不会删除你的模型。考虑在迁移中对级联使用 delete 或允许您的依赖项可以为空。

于 2017-03-08T14:47:31.323 回答
0

您收到的错误具体是因为您的列不可为空。

要解决此问题,您需要创建一个新的迁移并像这样更改您的表:

Schema::table('table', function ($table) {
    $table->string('column_name')->nullable();
});
于 2017-03-08T16:24:33.207 回答