2013-02-18 22 views
0

我有一個問題,我無法通過。Yii模型的誤區

我試圖像這樣顯示從關係表的信息:

$dataProvider = PartnerSite::model()->with('siteCommercials')->findAll("user_id=" . Yii::app()->user->id); 

    $this->render('index', array(
     'dataProvider' => $dataProvider, 
     'allMoney' => 1 
    )); 

但在我看來,我看到了這個錯誤:

Relation "siteCommercials" is not defined in active record class "PartnerSite". 

但事實是,我的模型有關係:

public function relations() { 
    return array(
     'goesFromSites' => array(self::HAS_MANY, 'GoesFromSite', 'site_id'), 
     'user' => array(self::BELONGS_TO, 'User', 'user_id'), 
     'siteCommercials' => array(self::HAS_MANY, 'SiteCommercial', 'site_id'), 
    ); 
} 

所以我的問題是。有什麼問題嗎?我無法得到它......只有一個模型存在很多問題... BeforeSave()不起作用,並且關係工作不正常。用戶關係工作得很好。 「模特」 的

全面上市:

<?php 
    abstract class BasePartnerSite extends GxActiveRecord { 

    public $siteCommercials = "oke"; 

    public static function model($className=__CLASS__) { 
    return parent::model($className); 
    } 

    public function tableName() { 
    return '{{partner_site}}'; 
    } 

    public static function label($n = 1) { 
    return Yii::t('app', 'PartnerSite|PartnerSites', $n); 
    } 

    public static function representingColumn() { 
    return 'site_name'; 
    } 

    public function rules() { 
    return array(
     array('site_name', 'required'), 
     array('user_id', 'numerical', 'integerOnly'=>true), 
     array('site_name', 'length', 'max'=>255), 
     array('id, site_name, user_id', 'safe', 'on'=>'search'), 
    ); 
    } 

    public function relations() { 
    return array(
     'goesFromSites' => array(self::HAS_MANY, 'GoesFromSite', 'site_id'), 
     'user' => array(self::BELONGS_TO, 'User', 'user_id'), 
     'siteCommercials' => array(self::HAS_MANY, 'SiteCommercial', 'site_id'), 
    ); 
    } 

    public function pivotModels() { 
    return array(
    ); 
    } 

    public function attributeLabels() { 
    return array(
     'id' => Yii::t('app', 'ID'), 
     'site_name' => Yii::t('app', 'Site Name'), 
     'user_id' => null, 
     'goesFromSites' => null, 
     'user' => null, 
     'siteCommercials' => null, 
    ); 
    } 

    public function search() { 
    $criteria = new CDbCriteria; 

    $criteria->compare('id', $this->id); 
    $criteria->compare('site_name', $this->site_name, true); 
    $criteria->compare('user_id', $this->user_id); 

    return new CActiveDataProvider($this, array(
     'criteria' => $criteria, 
    )); 
    } 

}

+0

你確定名稱的文件和類的名稱匹配?這也是不同的WAMP和XAMP。在PartnerSite中的第二個資本(camelcase)可能會拋出一些東西... – 2013-02-19 09:21:47

+0

是的,我確定該文件是這樣命名的。這首先,但重命名沒有做任何事情... – timofeiMih 2013-02-19 09:27:51

+1

是你的PartnerSite c lass從BasePartnerSite類擴展? – wonde 2013-02-19 16:28:17

回答

0

你的類是BasePartnerSite。在此課程中,您定義關係siteCommercials

您的錯誤信息:?「關係‘siteCommercials’不活動記錄類中定義的‘PartnerSite’

所以後來不應該你的代碼是

$dataProvider = BasePartnerSite::model()->with('siteCommercials')->findAll("user_id=" . Yii::app()->user->id);