2013-02-13 94 views
2

我想创建记录,但在for循环中,下一个id为null,如何使用此条件保存记录,当它找到null并保存以前的记录时,循环将停止。如何在cakephp中的值为空时保存记录?

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' 不能为空
和阵列

'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

我认为你是$值和$键之间的混淆,应当副使用反之亦然

你需要插入到前加空或空数组检查表 试试这个

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

} 
3

由于您的错误说,

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

在您必须更改此字段以允许db中的null保存空记录。如果你想让db自述一下,那么这个列的唯一键就是AUTO_INCREMENT。因此,如果您通过该栏的null,它将采用下一个键。

4

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

我不想在表中插入空值,我该怎么做? – 2013-02-13 08:08:37

+0

如果product_plan_id列为AUTO_INCREMENT,则在传递值为null时将自动递增,NULL不会插入到数据库中 – sandip 2013-02-13 08:11:37

+1

主键为product_plan_user_node_id,外键为product_plan_id和user_node_id,表中的外键和主键不为null。我想添加没有空值的数据。 – 2013-02-13 09:12:53