2014-07-15 3 views
2

Использование рамки Zend 1.9. У меня есть таблица в db со многими столбцами. Принести только определенные столбцы:Zend Framerwork 1.9 populate checkbox from database query

$select = $table->select(); 
$select->from($table, array('skill_id', 'description'))->where('parent_skill IS NULL'); 
$rows = $table->fetchAll($select); 

print_r($rows->toArray()); 

//This is the output : 
Array ([0] => Array ([skill_id] => 1 [description] => Soccorso stradale) [1] => Array ([skill_id] => 4 [description] => Carrozziere)) 

Теперь я хочу, чтобы заполнить флажок элемента:

$form->skills->setMultiOptions ($rows->toArray()); 

Моя проблема заключается метод setMultiOptions ожидать массив array(key=>value). Можно ли преобразовать массив $rows в хорошо сформированный массив?

ответ

1

Попытка построить массив для опций, как это:

$row_options = array(); 
foreach($rows->toArray() as $key => $val){ 
    $row_options[$val['skill_id']] = $val['description']; 
} 

$form->skills->setMultiOptions ($row_options); 
0

Ну, да, вы можете я догадываюсь

foreach($rows->toArray() as $subArray){ 
     foreach($subArray as $val){ 
      $newArray[] = $val; 
     } 
    } 
print_r($newArray);die; 
-1

Вы можете использовать fetchPair:

.... ..

$ select-> from ($ table, array ('skill_id', 'description')) - > где ('parent_skill IS NULL');

$ rows = $ table->fetchPair ($ select);

$ form-> skills-> setMultiOptions ($ row_options);