在cakephp中,当值为空时,如何保存记录?
我想保存记录,但在for循环中,下一个id为null,如何保存具有此条件的记录,当发现null并保存以前的记录时,循环将停止在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
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);
}
}