php – Yii – CActiveDataProvider使用关系
发布时间:2020-12-13 21:58:04 所属栏目:PHP教程 来源:网络整理
导读:我试图使用关系作为标准的一部分来创建CActiveDataProvider.我有以下内容: 用户模型: return array( 'favourites'=array(self::HAS_MANY,'UserFavourite','user_id','order'='added_at DESC'),); UserFavourite模型: return array( 'user'=array(self::BE
我试图使用关系作为标准的一部分来创建CActiveDataProvider.我有以下内容:
用户模型: return array( 'favourites'=>array(self::HAS_MANY,'UserFavourite','user_id','order'=>'added_at DESC'),); UserFavourite模型: return array( 'user'=>array(self::BELONGS_TO,'User','user_id'),'listing'=>array(self::BELONGS_TO,'Listing','listing_id'),); 控制器(查看收藏夹操作): $user = $this->loadUser(Yii::app()->user->id); 如何在我的用户模型中创建CActiveDataProvider,以获取当前用户的所有收藏夹 – 以及每个收藏夹的相关列表模型数据?所以我想做一些像$favorites = $user-> getFavourites();. CActiveDataProvider应该返回一个Listing对象数组.它应该支持分页和排序 – 默认排序将是added_at DESC. 我尝试过使用CDbCriteria的with选项,但这似乎不起作用…… 解决方法
您还没有提供数据库架构,但我想这段代码可以工作,
$criteria=new CDbCriteria(); $criteria->with=array('favourites'=>array('with'=>'listing')); $dataProvider= new CActiveDataProvider('User',array( 'criteria'=>$criteria,'sort'=>array( 'defaultOrder'=>'t.added_at DESC',))); 请确保您的关系正确且符合架构. >事实上,如果你不关心查询的数量,你可以随时调用类似的东西 $用户>收藏夹; 它将返回正确关系的正确数据,您可以再次执行此操作 为了,通过列表模型查看就像这样 foreach($user->favourites as $fav){ $this->renderPartial("PATH TO YOUR VIEW",array('data'=>$fav->listing)); } 请注意,用户可能有许多收藏夹,因此您需要使用foreach,除非您不使用CListview.另一种方法是用户Clistview,在这种情况下,您可能需要更改您的查询.让我知道这对您有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |