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 に答える