2013-02-18 4 views
0

J'ai un problème que je ne peux pas franchir.Malentendu dans le modèle Yii

Je suis en train d'afficher des informations de la table relationnelle comme ceci:

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

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

Mais à mon avis, je vois cette erreur:

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

Mais le fait est que mon modèle ont relation:

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'), 
    ); 
} 

Donc ma question est. Y at-il quelque chose qui ne va pas? Je ne peux pas l'obtenir ... Dans un seul modèle, il y a beaucoup de problèmes ... BeforeSave() ne fonctionne pas et les relations ne fonctionnent pas bien. La relation utilisateur fonctionne très bien.

liste complète des "modèle":

<?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

Êtes-vous sûr que le nom Ceci est également différent pour WAMP et XAMP La deuxième capitale (camelcase) dans PartnerSite peut jeter des choses ... –

+0

oui je suis sûr que le fichier est nommé comme ça. qu'en premier lieu, mais renommer n'a rien fait ... – timofeiMih

+1

est votre PartnerSite c Lass s'étend de la classe BasePartnerSite? – wonde

Répondre

0

Votre classe est BasePartnerSite. Dans cette classe, vous définissez la relation siteCommercials.

Votre message d'erreur:.? « Relation "siteCommercials" ne sont pas définis dans la classe d'enregistrement actif "Portail partenaires"

Alors ne devrait pas votre code soit

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