Yii关联表字段查询

本文介绍了在Yii的activeRecord model中如何使用search方法进行关联表字段的数据搜索。特别是当article表与user表存在关联,需要通过user表的nickname字段进行搜索时,提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Yii的activeRecord model里有一个search方法,可以用来搜索 数据,但是今天在搜索时,发现会用关联表的字段来搜索数据,查找资料,找到了解决方法

比如article表与user表有关联,需要在本表中用user.nickname字段来搜索数据

//在model里先定义一个搜索字段

public $nickname_search;

//定义关联规则

public function relation(){
        return array(
                'users' => array(
                        self::BELONGS_TO,
                        'User',
                        'user_id'
                )
        );
}
//定义搜索方法

public function search(){
        $criteria = new CDbCriteria;
        $criteria->with = array( 'users' );
        $criteria->compare( 'users.nickname', $this->nickname_search, true );
        
        return new CActiveDataProvider($this, array(
                'criteria' => $criteria
        ));
}

//在actionIndex里可以如此使用搜索

public function actionIndex(){
  $model=Article::model();
   if(isset($_GET['nickname']){
        $modle->nickname_search=$_GET['nickname'];
         $dataProvider=$model->search();
   }else{
         $dataProvider=new CActiveDataProvider($model->with('users'));
    }
    $this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值