2014-01-13 3 views
0

Im пытается заполнить Cgridview с данными Mongo, но получает ошибку "Undefined offset: 0"
Вот мое кодирование,CgridView должен быть заполнен Монго данных- YII

$sql="SELECT name FROM CRM_Field Where crm_base_contact_id = ".$base; 
    $names =Yii::app()->db->createCommand($sql)->query()-> readAll(); 
    $mongo = new Mongo(Yii::app()->mongodb->connectionString); 
    $collection = $mongo->test->crm_contact_tmp; 
    $mongocol = $mongo->test->crm_contact_tmp->find(array('crm_base_contact_id' => array('$in' => array($base)))); 
    $arrayDataProvider = new CArrayDataProvider (iterator_to_array($mongocol)); 
?> 

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id' =>'BCImported-grid', 
    'dataProvider' =>$arrayDataProvider, 
    'columns' => $names, 
)); ?> 

Может кто-нибудь предложить правильный способ сделать это? Я получаю пустую сетку, но с количеством записей в сетке отображается правильно, но данные не отображаются !!!

+0

посмотрите здесь: http://www.yiiplayground.com/index.php?r=UiModule/dataview/gridViewArray, и посмотреть, как массив колонок должен быть заполнен. – veelen

+0

Можете ли вы указать, где я делаю неправильно? Im новичок для yii ... –

+0

Что такое массив 'iterator_to_array ($ mongocol)' return? [CArrayDataProvider] (http://www.yiiframework.com/doc/api/1.1/CArrayDataProvider#rawData-detail) требует, чтобы rawData имели целые ключи на основе нуля. , , – ernie

ответ

1

Данные, которые вы возвращаете из mongo, не имеют целых ключей на основе нуля, которые требуются CArrayDataProvider. Похоже, у него есть массивы в виде ключей. Я думаю, что установка параметра ложь use_keys должен решить эту проблему, а именно:

$arrayDataProvider = new CArrayDataProvider (iterator_to_array($mongocol, false)); 
+0

Ошибка «undefined index id» появляется !!!! –

+0

Спасибо @ernie я добавил параметр 'keyField', как этот ==> $ arrayDataProvider = новый CArrayDataProvider (iterator_to_array ($ mongocol, false), 'keyField' => 'Name') теперь работает, но одно значение столбца не заполняется, т. Е. последний столбец в сетке почему ??? –

+0

Если я использую массив ('Name', 'DOB', 'Age', 'Addr') в сетке 'Columns' im, получая все данные в сетке, но если я использую последние данные столбца $ names, которые не отображаются в сетке ... как это могло произойти ???? –