繁体   English   中英

yii中的关系错误

[英]Relation error in yii

我是yii新手。 我有三种型号

 Site(id,name)
 User(id,name,..)
 UserSite(id,user_id,site_id)

我需要的是在我选择用户需要的网站下拉菜单时属于该网站

用户模型中的关系为'userSites' => array(self::BELONGS_TO, 'UserSite', 'id'),

搜索功能的用户模型是

public function search($sid)
    {
        // @todo Please modify the following code to remove attributes that should not be searched.

        $criteria=new CDbCriteria;

        $criteria->compare('id',$this->id);
        $criteria->compare('customer_id',$this->customer_id,true);
        $criteria->compare('email',$this->email,true);
        $criteria->compare('password',$this->password,true);
        $criteria->compare('name',$this->name,true);
        $criteria->compare('company',$this->company,true);
        $criteria->compare('country',$this->country,true);
        $criteria->compare('date_added',$this->date_added,true);
                $criteria->compare('expiry_date',$this->expiry_date,true);
                if($sid!=null)
                {
                    $criteria->with = array('userSites'); 
                    $criteria->addCondition('userSites.site_id='.$sid);
                }

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

        ));
    }

在这里发生的事情是在显示用户(user.id=user_site.id)但实际上我需要(user.id=user_site.user_id)

现在,此关系'userSites' => array(self::BELONGS_TO, 'UserSite', 'id'),返回UserSite->id ,我需要返回UserSite->User_id

请有人帮我解决这个问题。

您的关系倒转了。 每个User可以有多个UserSite ,这样您的关系才可以

'userSites' => array(self::HAS_MANY, 'UserSite', 'user_id')

为了在CActiveDataProvider渴望加载关系,必须将CDbCriteria::together设置为true

if($sid!=null){
    $criteria->together = true;
    ...

有关此问题的说明, 请参见http://www.yiiframework.com/wiki/280/1-n-relations-sometimes-require-cdbcriteria-together/

但是,跟踪应用程序的查询表明,当CActiveDataProvider获取数据时,它处理1:n相关表的方法有所不同。 AR通过一个查询将所有那些1:1子表联接在一起,从父表和1:1相关的子表中获取数据。 1:n子表不属于此查询。 AR从具有后续查询的数据中获取数据,每个1:n子表查询一次,并使用WHERE PK IN(id1,id2,...)子句指定所需的行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM