加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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,在这种情况下,您可能需要更改您的查询.让我知道这对您有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读