2015-09-21 3 views
0

Я попытался определения dataprovider для CGridView в yii, но я получаю этуюй DataProvider возвращает ошибку 500

ошибку 500: Попытка получить свойство необъектных

следующее моя модель и вид/admin.php фрагменты кода

model.php:

public function search2() 
{ 
    $sql='select family_tree.tree_creator_id, C.user_fullname, 
    family_tree.tree_user1_id, A.user_fullname, 
    family_tree.tree_user2_id,B.user_fullname, 
    family_tree.tree_type, family_tree.tree_type_name 
    from family_tree 
    join user A on A.user_id=family_tree.tree_user1_id 
    join user B on B.user_id=family_tree.tree_user2_id 
    join user C on C.user_id=family_tree.tree_creator_id 
    '; 

    if($this->tree_creator_id!=NULL) 
    { 
     $sql.="where family_tree.tree_creator_id='$this->tree_creator_id'"; 
    } 

    $a= Yii::app()->db->createCommand($sql) 
    ->queryAll(); 

    return new CArrayDataProvider($a, array(
     'id'=>'family-tree', 
     'keyField'=>'tree_id')); 
} 

admin.php:

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?> 
<div class="search-form" style="display:none"> 

    <?php $this->renderPartial('_search',array(
    'model'=>$model, 
    )); ?> 
</div><!-- search-form --> 

    <?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'family-tree-grid', 
    'dataProvider'=>$model->search2(), 

    'columns'=>array(
     'tree_id', 
     'tree_creator_id', 
     'tree_user1_id', 
     'tree_user2_id', 
     'tree_type', 
     'tree_type_name', 

     /*'tree_grey_flag',*/ 

     array(
      'class'=>'CButtonColumn', 
     ), 
    ), 
)); ?> 

любая помощь будет оценена, спасибо!

+1

Вы применяете '$ model' для просмотра? – SiZE

+0

yup, его пройден –

+0

Пожалуйста, укажите строку, указанную в сообщении об ошибке, а также имя и путь к файлу, полученному от – topher

ответ

0

В вашем выборе я не вижу

'tree_id', 

и мог по полезной нотации избегая полой неоднозначности как

tableName.columnName as uniqueFieldName 

и в GridView см uniqueFieldName

Я надеюсь, что это может быть полезным

+0

tree_id, всего лишь значение автоматического увеличения, используемое для извлечения всей строки данных по индексу. я хочу сделать несколько соединений для извлечения user_fullname для экземпляров tree_user1_id, tree_user2_id и tree_creator_id. схема базы данных выглядит примерно так: ** пользователь **: user_id ** | ** user_fullname; ** family_tree **: tree_creator_id ** | ** tree_user1_id ** | ** tree_user2_id ** | ** –

Смежные вопросы