2

レコードを保存したいのですが、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?
4

3 に答える 3

3

あなたのエラーが言うように、

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

このフィールドを変更してnull、dbでnullレコードを保存できるようにする必要があります。また、dbにそれ自体を記述させたい場合は、その列の一意のキーを作成しAUTO_INCREMENTます。したがってnull、その列に合格すると、次のキーが必要になります。

于 2013-02-13T07:50:37.570 に答える
3

の場合は通常を使用してください。サンプルコードは次のとおりです。

 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);
    }
 }    
于 2013-02-13T07:50:48.523 に答える
3

$valueと$keyの間で混乱していると思いますが、その逆も同様です。

テーブルに挿入する前に、空またはnull配列のチェックを追加する必要がありますこれを試してください

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

}   
于 2013-02-13T09:59:06.253 に答える