2017-07-11 3 views
-1

私は以下のように複数のチェックボックスを作成しました。Cakephp 2.8.2 IN句の奇妙な動作

$forms = $this->wondr->m('WApplication.ApplicantForms')->find('list', array('conditions' => array('facility_id' => $this->wondr->facility['Facility']['id']), 'contain' => array())); 

    $event->result['forms'] = $event->subject()->Form->input(
      'forms', array(
       'multiple' => 'checkbox', 
       'options' => $forms, 
       'class' => 'form-control', 
       'label' => __('Forms'), 
      ) 
     ); 

私は複数のチェックボックスを選択したとき、それは正常に動作しますが、私は、単一のチェックボックスを選択したときには、CakePHPは自動的に単一IDの=()INに)(IN変換

$forms = $this->wondr->m('WApplication.ApplicantForms')->find('list', array('conditions' => array('facility_id' => $this->wondr->facility['Facility']['id'], 
     'ApplicantForms.id IN '=> $event->data['requestQuery']['forms'] 
    ), 'contain' => array())); 

エラーがスローされます。

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '= ('595b5fab-97d4-4c59-a41a-013fac120009')' at line 1 

SQL Query: SELECT `ApplicantForms`.`id`, `ApplicantForms`.`name` FROM `wondr`.`applicant_forms` AS `ApplicantForms` WHERE `facility_id` = '58ecb98f-92cc-4a90-a692-0026ac120005' AND `ApplicantForms`.`id` IN = ('595b5fab-97d4-4c59-a41a-013fac120009') 

誰か助けてもらえますか?事前に

おかげ

+0

'IN'を取り除く、と' $ event->データ[ 'requestQuery'] [ 'フォームが'] '配列であることを確認して取得してみてください。 –

+0

$ event-> data ['requestQuery'] ['forms']は配列です。 – Sehdev

答えて

0

ちょうど置き換える:

$forms = $this->wondr->m('WApplication.ApplicantForms')->find('list', array('conditions' => array('facility_id' => $this->wondr->facility['Facility']['id'], 
    'ApplicantForms.id IN '=> $event->data['requestQuery']['forms'] 
), 'contain' => array())); 

で:

$forms = $this->wondr->m('WApplication.ApplicantForms')->find('list', array('conditions' => array('facility_id' => $this->wondr->facility['Facility']['id'], 
    'ApplicantForms.id'=> (array)$event->data['requestQuery']['forms'] 
), 'contain' => array())); 

を言い換えれば、あなたが持っている場合(INを削除し、$event->data['requestQuery']['forms']が配列であることを確認してください疑問、あなたは最初にvar_dumpそれをすることができます)。

出典:https://stackoverflow.com/a/9445104/978690