2013-12-16 159 views
1

在我的項目,我有CakePHP的的foreach數據數據庫在選擇(形式)選項

  • 「產品」 hasAndBelongsToMany 「尺寸」
  • 「ProductsSize」 屬於關聯 「產品」
  • 「ProductSize」 屬於關聯「大小」

在ProductsSize,一個PRODUCT_ID可能有許多size_id。

因此,我想要做一個表單有一個選擇類型輸入,列出所有size_id其中的product_id = $ id。

我做了什麼是:

在控制器:

$size = $this->Product->ProductsSize->find('all', array(
    'conditions' => array('ProductsSize.product_id' => $id), 
    'fields' => array('ProductsSize.size_id'), 
)); 

鑑於:

<?php echo $this->form->create('Cart', array('action' => 'add')); ?> 
<?php echo $this->form->input('size_id', array('label' => 'Size', 'options' => $size)); ?> 

然後我得到錯誤:未定義指數:ProductsSize

但是當我放入foreach,顯示的數據如下:

<?php foreach ($size_apparel as $size): ?> 
<?php echo $size['ProductsSize']['size_id'];?><br/> 
<?php endforeach; ?> 

任何人都可以請幫我做選項的foreach。

回答

1

的問題是,你正在使用的選項無效數組。您請求:

$size = $this->Product->ProductsSize->find('all', array(
    'conditions' => array('ProductsSize.product_id' => $id), 
    'fields' => array('ProductsSize.size_id'), 
)); 

什麼,你應該要求是:

$size = $this->Product->ProductsSize->find('list', array(
    'conditions' => array('ProductsSize.product_id' => $id), 
)); 

這將返回選項的表單字段中,預計其格式爲:

array(
    {id} => {size}, 
    {id} => {size}, 
    {id} => {size}, 
    {id} => {size}, 
    ... 
) 
+1

是的yes..u是正確的..謝謝! – dancingAngel

0

我想你的意思是說

<?php echo $this->form->input('size_id', array('label' => 'Size', 'options' => $size)); ?> 

注「選項」,而不是「價值」

+0

嘿感謝answer..its從複製錯誤paste..but我已經使用選項..和仍然有未定義的索引:ProductsSize錯誤。 – dancingAngel

+0

它應該是代碼中的「ProductSize」而不是「ProductsSize」嗎? – XuDing

0

$ List = Set :: classicExtract($ size,'{n} .ProductSize.product_id');

$列表將包含鍵值(ProductSize.product_id)對。

或者你可以改變你的查詢作爲

$size = $this->Product->ProductSize->find('list', array(
    'conditions' => array('ProductSize.product_id' => $id), 
)); 

希望它會爲你工作