0

我有一个无法解决的问题。

我正在尝试显示来自关系表的信息,如下所示:

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

}

4

1 回答 1

0

你的班级是BasePartnerSite。在此类中,您定义关系siteCommercials

您的错误消息:“关系”siteCommercials“未在活动记录类“PartnerSite”中定义。

那么你的代码不应该是吗?

$dataProvider = BasePartnerSite::model()->with('siteCommercials')->findAll("user_id=" . Yii::app()->user->id);
于 2013-02-19T13:40:24.770 回答