2011-02-03 135 views
2

我有多個複選框下面的代碼..在cakephp中選擇多個複選框?

echo $this->Form->input('type', array('type' => 'select', 'multiple' => 'checkbox','options' => array(
       'client' => 'Client', 
       'vendor' => 'Vendor', 
       'employee' => 'Employee' 
      ) 
     )); 

當我選擇多個選項,並提交下列錯誤出現「未知列‘陣’的‘字段列表’」的形式。我想保存複選框的值。

+0

你用來保存值的代碼是什麼? – JJJ 2011-02-03 13:23:47

回答

2

在將其保存到數據庫之前,您需要將多個複選框中產生的array編碼爲string

在這種情況下,它可能是最簡單的implode()數組,但如果數據更加結構化(即嵌套的數組,關聯數組),您也可以使用類似json_encode()

var_dump($this->data); 
/* 
array 
    'Model' => 
    array 
     'type' => 
     array 
      0 => string 'client' (length=6) 
      1 => string 'vendor' (length=6) 
*/ 

$this->data['Model']['type'] = implode(',', $this->data['Model']['type']); 
var_dump($this->data); 
/* 
array 
    'Model' => 
    array 
     'type' => string 'client,vendor' (length=13) 
*/ 

這將變得更加困難(慢)來查詢數據庫,你在一列中存儲多個值。

$this->Model->find('all', array(
    'conditions' => array(
     'type LIKE' => '%vendor%' 
    ) 
)); 
+0

你在開玩笑吧?這只是一個非常糟糕的數據庫規範化示例!你真的不想那樣做,永遠不會! – 2013-01-28 10:50:54

+1

同意 - 我確實提交了一些不情願的答案,但它解決了OP的直接問題(未知列'數組')。另一個答案試圖指導OP走上最佳實踐的道路。 – deizel 2013-01-28 12:34:14