2015-02-13 2 views
0

У меня есть 2 таблицы в моей базе данных:Отображение данных из реляционной ActiveRecord

Prodik prodik_id prodik_name

Pelajaran pelajaran_id pelajaran_name prodik_id

Я хочу, чтобы отобразить данные в GridView с колонками:

| prodik_name | pelajaran |

Я новичок в Yii2, я стараюсь изо всех сил, но все еще не удалось.

+0

Извините, что я имею в виду | prodik_name | pelajaran_name | для отображения столбцов. –

+0

Прежде всего, присвоение имен атрибутам, которые считаются плохими. Опишите, что вы пробовали, и добавьте код. – arogachev

+0

показать ваш gridview –

ответ

0

Сначала создайте модель для вас.

use yii\db\ActiveRecord; 

class Prodik extends ActiveRecord 
{ 

    public static function tableName() 
    { 
     return 'Prodik'; 
    } 

    public function getPelajaran() 
    { 
     $this->hasOne(Pelajaran::className(), ['prodik_id' => 'prodik_id']); 
    } 
} 

Создать следующую модель:

use yii\db\ActiveRecord; 

class Pelajaran extends ActiveRecord 
{ 
    public static function tableName() 
    { 
     return 'Pelajaran'; 
    } 

} 

Создание контроллера:

public function actionGrid(){ 
    $query = Prodik::find()->with(['pelajaran']); 
    $dataProvider = new ActiveDataProvider([ 
       'query' => $query, 
      ]); 

    return $this->render('grid', [    
       'dataProvider' => $dataProvider, 
      ]); 
} 

Создать файл представления.

<?= \yii\grid\GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 
     'prodik_name', 
     [ 
      'value' => function ($data) { 
       return $data['pelajaran']['pelajaran_name']; // or return $data->pelajaran->pelajaran_name; 
      } 
     ] 
    ] 
]); ?> 
+1

Вы уверены, что получите массив '$ data'? Я не вижу, что вы применяете свойство asArray, чтобы быть истинным в вашем запросе! Также я предполагаю, что вы можете получить доступ к реляционным полям с помощью '' name '=>' relation.field'' – iamawebgeek

+0

Вы правы. '$ data' - это объект. 'return $ data-> pelajaran-> pelajaran_name;' –

+0

ok Спасибо за ваш ответ, я попробую .. –

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