2013-03-12 1 views
0

У меня есть две таблицы, 1. Students2.SrkParents.как отображать две модели в одном CGridView

отношения в Студентов модель является,

'srkParents' => array(self::HAS_MANY, 'SrkParents', 'studentID'), 

отношения в SrkParents модель есть,

'student' => array(self::BELONGS_TO, 'Students', 'studentID'), 

точка зрения ,

<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'students-grid', 
'dataProvider'=>$dataProvider, 
'filter'=>$model, 
'columns'=>array('studentID','status','del', 

array('name'=>'SrkParents.fathers_name', 
'value'=>'$data->Students->fathers_name', 
'type'=>'raw'), 
array('class'=>'CButtonColumn',),),)); 

я не знаю, где я сделал ошибку .. Я получаю сообщение об ошибке, как показано ниже,

Property "Students.Students" is not defined. 

ответ

1

Модифицированный Ответ: Просто измените отношение HAS_ONE из has_many

'srkParents' => array(self::HAS_ONE, 'SrkParents', 'studentID'), 
+0

Thnx Saxena .. Я пробовал те, но im получал ту же ошибку. Мне нужно делать какие-либо изменения в критериях моделей? – sher

+0

@sher yes ... Если вы не добавили критерии, добавьте это также в свои модели .: '$ criteria-> compare ('srkParents', $ this-> srkParents, true);' –

+0

У меня есть критерии по умолчанию, мне все еще нужно добавлять или смотреть? – sher

0

Ваше отношение srkParents является HAS_MANY отношение , Таким образом, $data->srkParents представляет собой массив SrkParents, а не объект. Это имеет смысл, потому что у ваших учеников несколько родителей.

я не знаю достаточно о атрибуты вашей модели, так что я могу только догадываться: Один из способов решить эту проблему было бы добавить get эр к вашей Students модели, которая перебирает $this->srkParents, чтобы найти объект отца и вернуть имя оттуда:

public function getFatherName() 
{ 
    foreach($this->srkParents as $parent) 
     if($parent->sex=='m' /* just guessing */) 
      return $parent->name; 
} 

Тогда вы могли бы использовать $data->fatherName в вашем виде сетки.

+0

У меня есть внешний ключ в деталях SrkParents для studentID, что означает, что отношения HAS_ONE, правильно? Я изменил его на HAS_ONE и сейчас работаю. – sher

0

Ваше отношение имя студента, и это случай чувствительный.

Попробуйте изменить $data->Students->fathers_name на $data->student->fathers_name.

Недвижимость Students.Students не определено.

Что я делаю неправильно?

  • Вы пытаетесь получить поле Students от модели Students, которая не определена.
+0

Большое вам спасибо за помощь. я ошибся в отношениях. и теперь решена – sher

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

  • Нет связанных вопросов^_^