Intereting Posts
HTTP POST из PHP, без cURL Скрытие истинного идентификатора объекта базы данных в url's Как конвертировать между форматами времени? Примечание. Массив для преобразования строк в C: \ xampp \ htdocs \ example \ echo.php в строке 8 Array Интерпретация интервала дат интервала PHP с точностью до десятичной Удалить mysql-записи не работает в codeIgniter Как использовать php, который варится? Я хочу создать страницу поиска, где я хочу отображать найденные данные из базы данных в «div»? Получить URL-адрес изображения из параметра twit api entity php PHP-скрипт не запускается при запуске с Proxy-сервером в Angular PHP: сортировать массив по значению Как определить, удалось ли выполнить запрос на обновление MySQL, когда данные, переданные в запросе, такие же, как и в базе данных? Использование mod_rewrite для преобразования путей с хэш-символами в строки запроса zend_loader_autoloader не загружает абстрактный класс Установка WordPress MSSQL

Проблема фрейма yii с объектами (2)

Это, в некоторой степени, продолжение вопроса, который я уже опубликовал «проблема фреймов yii с объектами », но возникла новая проблема, поэтому я публикую новый вопрос для лучшего отображения кода и объяснения того, что не так. Это проблематичная часть кода:

<?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'predmet-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( //array( // 'name'=>'naziv', // 'value'=>$model->studijskiProgram->naziv, //), 'sp_id', 'naziv', 'semestar', 'predavanja', 'vjezbe', //array( // 'class'=>'CButtonColumn', //), ), )); ?> 

И это код класса модели, где расположены отношения:

 <?php /** * This is the model class for table "predmet". * * The followings are the available columns in table 'predmet': * @property integer $id * @property integer $sp_id * @property string $naziv * @property integer $semestar * @property integer $predavanja * @property integer $vjezbe */ class Predmet extends CActiveRecord { /** * Returns the static model of the specified AR class. * @param string $className active record class name. * @return Predmet the static model class */ const STATUS_O = "O"; const STATUS_I = "I"; const STATUS_VP = "VP"; public static function model($className=__CLASS__) { return parent::model($className); } /** * @return string the associated database table name */ public function tableName() { return 'predmet'; } /** * @return array validation rules for model attributes. */ public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array('sp_id, naziv, semestar, predavanja, vjezbe, status', 'required'), array('sp_id, semestar, predavanja, vjezbe', 'numerical', 'integerOnly'=>true), array('naziv', 'length', 'max'=>100), // The following rule is used by search(). // Please remove those attributes that should not be searched. array('id, sp_id, naziv, semestar, predavanja, vjezbe, status', 'safe', 'on'=>'search'), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. //POVEZUJEMO PREDMET I STUDIJSKI PROGRAM //BELONGS_TO ide za vezu jedan u vise(kad na stranu 1 pisemo kome pripada) //HASMANY ili HAS_MANY (?) JE ZA VISE U JEDAN /*ovo prvo 'studijskiProgram' je kao pokazivac na studijski program s kojim je povezan Neka imamo $predmet. da bi pristupili nazivu studijskog programa kome pripada, koristicemo: $predmet->studijskiProgram->naziv */ return array( 'studijskiProgram' => array(self::BELONGS_TO, 'StudijskiProgram', 'sp_id') ); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'id' => 'ID', 'sp_id' => 'Studijski program', 'naziv' => 'Naziv', 'semestar' => 'Semestar', 'predavanja' => 'Predavanja', 'vjezbe' => 'Vjezbe', 'status' => 'Status' ); } /** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { // Warning: Please modify the following code to remove attributes that // should not be searched. $criteria=new CDbCriteria; $criteria->compare('id',$this->id); $criteria->compare('sp_id',$this->sp_id); $criteria->compare('naziv',$this->naziv,true); $criteria->compare('semestar',$this->semestar); $criteria->compare('predavanja',$this->predavanja); $criteria->compare('vjezbe',$this->vjezbe); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); } //Funkcija za punjenje Combo box-a (Wombo) public function uzmiStatusPredmeta() { return array( self::STATUS_O => 'Obavezni', self::STATUS_I => 'Izborni', self::STATUS_VP => 'VP' ); } public function uzmiSpisakStudijskihPrograma() { $query = 'select id, naziv from studijski_program'; $rezultat = Yii::app()->db->createCommand($query)->queryAll(); $spisak = CHtml::listData($rezultat,'id','naziv'); //prikazuje naziv, krije ID(valjda radi combo boxa-wombo ?) return $spisak; } public function vratiProgram() { $query = 'select s.naziv from studijski_program s,predmet p where p.sp_id = s.id'; $rezultat = Yii::app()->db->createCommand($query)->queryScalar(); //$rezultat1 = implode($rezultat); //$rezultat2 = implode($rezultat1); return $rezultat; } public function vratiProgramId() { $query = 'select s.id from studijski_program s,predmet p where p.sp_id = s.id'; $rezultat = Yii::app()->db->createCommand($query)->queryScalar(); //$rezultat1 = implode($rezultat); //$rezultat2 = implode($rezultat1); return $rezultat; } } 

Как вы можете видеть здесь, существует отношение к «studijskiProgram» здесь, используя внешний ключ «sp_id» в «predmet». Однако когда я пытаюсь получить доступ к «називскому» протрети из «studijskiProgram» в верхней части кода следующим образом:

  array( 'name'=>'naziv', 'value'=>$model->studijskiProgram->naziv, ), 

что было решением предыдущего вопроса, в котором используется виджет CDeatilView. По какой-то причине то же самое здесь не работает и сообщает об ошибке при попытке получить proprety не-объекта. Любая идея, что изменить, чтобы это сработало?