我不知道如何在特定条件下将字段设置为null。这应该是一个简单的查询,但是我无法在可为空的字段上为NULL设置正确的值。
Product::where('id', $product_list)->update(['family_id' => null]);
也不
Product::where('id', $product_list)->update(['family_id' => DB::raw(null)]);
成功了。 两种情况都可以正常编译,但是生成的查询似乎是错误的,因为我遇到了SQL错误。在第一种情况下,错误是:
SQLSTATE[HY093]: Invalid parameter number (SQL: update `products` set `family_id` = ?, `products`.`updated_at` = 2019-11-12 08:41:07 where `id` = ?)
第二个错误是:
QLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ', `products`.`updated_at` = ? where `id` = ?' at line 1 (SQL: update `products` set `family_id` = , `products`.`updated_at` = 2019-11-12 08:21:50 where `id` = ?)
在第一种情况下,似乎没有将NULL添加到准备好的查询的参数中,而在secon中,NULL值作为空插入到查询中。有什么简单的方法可以将值设置为NULL?
答案 0 :(得分:1)
您应该首先考虑以下几点。
1)family_id
列在表中可以为空。如果没有,则设置为空。
2)确保您拥有$fillable
模型列Product
的{{1}}属性。
确保family_id
返回该特定产品的$product_list
。
如果id
是产品数据的集合/数组,则使用:
$product_list
答案 1 :(得分:0)
尝试一下 Product :: where('id',$ product_list)-> update(['family_id'=>'NULL']);