1

3つのテーブル、、、があるとproperty_detailsproperty_feature_detailsますproperty_feature_relations

PropertyDetailモデルには、PropertyFeatureRelationとのhasMany関係があります。

データ配列を保存するときは、次のようになります。

$this->data = array('PropertyDetail' => array('name'=>'xyz'),'PropertyFeatureRelation' => array('0' => array('feature_id'=>1),'1' => array('feature_id'=>5),'2' => array('feature_id'=>0),'3' => array('feature_id'=>0)));

これらのfeature_ids値は、チェックボックスから出ています。チェックされているものはids値を含み、チェックされていないものは0の値を持っています。ただし、子テーブルには、すべてのデータがゼロおよびゼロ以外で保存されます。

実際には、チェックされているだけのチェックボックスの値を保存したいと思います。手動コントローラーロジックは提供しないでください。助けて。

4

1 に答える 1

0

質問、回答、調査の例で説明します

以下のように、複数のチェックボックス構文を使用できます。

                                             $answers=array();
                                    $tmp_ans=$question['Answer'];
                                    for($j=0;$j < count($tmp_ans);$j++)
                                    $answers[$tmp_ans[$j]['id']]=$tmp_ans[$j]['answer'];            
                                    echo '<li>';
                                        echo $this->Form->input('Answer', array(
                                        'type' => 'select',
                                        'name'=>'Answer['.$question['Question']['id'].']',
                                        'class'=>'test',
                                        'label'=>false,
                                        'multiple' => 'checkbox',
                                        'options' =>$answers ,
                                        ));

                                    echo '</li>';

その後、他の人がチェックした回答だけが投稿の配列に入らないので、データを保存するために以下の構文を使用できます

if(!empty($this->data['Answer'])){

                foreach ($this->data['Answer'] as $key=>$val):

                    if(!empty($val)):
                            if(is_array($val)):

                                foreach ($val as $ans):
                                    $post_data['UserAnswer']['id']='';
                                    $post_data['UserAnswer']['survey_id']=$id;
                                    $post_data['UserAnswer']['user_id']=$this->Auth->user('id');
                                    $post_data['UserAnswer']['question_id']=$key;
                                    $post_data['UserAnswer']['answer_id']=$ans;
                                    $this->UserAnswer->save($post_data['UserAnswer']);
                                endforeach;
                            else:
                                    $post_data['UserAnswer']['id']='';
                                    $post_data['UserAnswer']['survey_id']=$id;
                                    $post_data['UserAnswer']['user_id']=$this->Auth->user('id');
                                    $post_data['UserAnswer']['question_id']=$key;
                                    $post_data['UserAnswer']['answer_id']=$val;
                                    $this->UserAnswer->save($post_data['UserAnswer']);

                            endif;

                    endif;
                endforeach;

            }
于 2013-02-26T06:33:05.377 に答える