【问题标题】:Misunderstanding in Yii modelYii模型中的误区
【发布时间】:2013-02-03 10:15:24
【问题描述】:

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

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

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

}

【问题讨论】:

  • 你确定文件名和类名匹配吗?这对于 WAMP 和 XAMP 也有所不同。 PartnerSite 中的第二个大写字母(驼峰式)可能会丢掉东西......
  • 是的,我确信该文件就是这样命名的。我首先考虑了这一点,但重命名并没有做任何事情......
  • 您的 PartnerSite 类是从 BasePartnerSite 类扩展而来的吗?
  • 也许你也应该在SiteCommercial中定义关系?

标签: php model yii render


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多