在cakephp中,当值为空时,如何保存记录?

在cakephp中,当值为空时,如何保存记录?,php,mysql,cakephp,cakephp-1.3,cakephp-2.0,Php,Mysql,Cakephp,Cakephp 1.3,Cakephp 2.0,我想保存记录,但在for循环中,下一个id为null,如何保存具有此条件的记录,当发现null并保存以前的记录时,循环将停止 foreach($record['ProductPlan'] as $value=>$key) { $ProductsUser = array('product_plan_id'=>$key,'user_node_id'=>$userNodeId, 'is_active'=>1); $t

我想保存记录,但在for循环中,下一个id为null,如何保存具有此条件的记录,当发现null并保存以前的记录时,循环将停止

 foreach($record['ProductPlan'] as $value=>$key)

{
 $ProductsUser = array('product_plan_id'=>$key,'user_node_id'=>$userNodeId, 'is_active'=>1);
                            $this->$model->UserNode->ProductPlansUserNode->create();
                            $this->$model->UserNode->ProductPlansUserNode->save($ProductsUser);

                        }   
错误为完整性约束冲突:1048列“产品计划id”不能为空
在数组中

   '2'
array(
'product_plan_id' => '2',
'user_node_id' => '26',
'is_active' => (int) 1
)
'3'
array(
'product_plan_id' => '3',
'user_node_id' => '26',
'is_active' => (int) 1
)
'' // This is null how can i save previous records before null?
正如你的错误所说

完整性约束冲突:1048列“产品计划id”不能为空


您必须更改此字段以允许数据库中的
null
保存空记录。如果您想让db对其进行自我描述,请为该列指定一个唯一的键,使其
AUTO_INCREMENT
。因此,如果为该列传递
null
,它将使用下一个键。

只需使用普通if。以下是示例代码:

 foreach ($record['ProductPlan'] as $value => $key) {
    if (isset($key) && $key) {
       $ProductsUser = array('product_plan_id' => $key, 'user_node_id' => $userNodeId, 'is_active' => 1);
       $this->$model->UserNode->ProductPlansUserNode->create();
       $this->$model->UserNode->ProductPlansUserNode->save($ProductsUser);
    }
 }    

我认为您混淆了$value和$key,应该使用$value和$key

在插入到表中之前,需要添加空数组或空数组的检查 试试这个


我不想在表中插入空值,我该怎么做呢?如果product\u plan\u id列是自动递增的,它会在传递值null后自动递增,空值不会插入数据库主键是product\u plan\u user\u node\u id,外键是product\u plan\u id和user\u node\u id,我的表中的外键和主键不为null。我想添加不带空值的数据。当我更改表中product\u plan\u id为空时,它将插入带空值的记录,我不想插入带空值的记录,只插入那些product\u plan\u id不为空的记录。希望你能理解。
 foreach($record['ProductPlan'] as $value=>$key){
   If($key){
   $ProductsUser = array('product_plan_id'=>$key,'user_node_id'=>$userNodeId, 'is_active'=>1);
   $this->$model->UserNode->ProductPlansUserNode->create();
   $this->$model->UserNode->ProductPlansUserNode->save($ProductsUser);  
  }

}