如果在cakephp中值为null时如何保存记录?

时间:2013-02-13 07:48:08

标签: php mysql cakephp cakephp-1.3 cakephp-2.0

我想sava记录,但在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列'product_plan_id'不能为null
并在数组

   '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?

3 个答案:

答案 0 :(得分:3)

正如您的错误所说,

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

您必须更改此字段以允许db中的null保存空记录。如果你想让db自己决定,那么该列的唯一键就是AUTO_INCREMENT。因此,如果您为该列传递null,则会使用下一个键。

答案 1 :(得分:3)

只需使用普通的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);
    }
 }    

答案 2 :(得分:3)

我认为你在$ value和$ key之间感到困惑,反之亦然

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

 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);  
  }

}