GST*_*TAR 3 php activerecord yii
我试图使用关系作为创建标准的一部分CActiveDataProvider.我有以下内容:
用户模型:
return array(
'favourites'=>array(self::HAS_MANY, 'UserFavourite', 'user_id', 'order'=>'added_at DESC'),
);
Run Code Online (Sandbox Code Playgroud)
UserFavourite模型:
return array(
'user'=>array(self::BELONGS_TO, 'User', 'user_id'),
'listing'=>array(self::BELONGS_TO, 'Listing', 'listing_id'),
);
Run Code Online (Sandbox Code Playgroud)
控制器(查看收藏夹操作):
$user = $this->loadUser(Yii::app()->user->id);
Run Code Online (Sandbox Code Playgroud)
如何CActiveDataProvider在我的用户模型中创建一个favourites由当前用户提取所有内容的模型- 以及listing每个收藏夹的相关模型数据?所以我想做点什么$favourites = $user->getFavourites();.
本CActiveDataProvider应返回数组Listing对象.它应该支持分页和排序 - 默认排序added_at DESC.
我试过使用with选项,CDbCriteria但似乎不起作用......
您还没有提供数据库架构,但我想这段代码可以工作,
$criteria=new CDbCriteria();
$criteria->with=array('favourites'=>array('with'=>'listing'));
$dataProvider= new CActiveDataProvider('User', array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'t.added_at DESC',
)));
Run Code Online (Sandbox Code Playgroud)
请确保您的关系正确且符合架构.
事实上,如果你不关心查询的数量,你可以随时调用类似的东西
$用户>收藏夹;
它将返回正确关系的正确数据,您可以再次执行此操作
为了通过列表模型来查看这样的
foreach($user->favourites as $fav){
$this->renderPartial("PATH TO YOUR VIEW",array('data'=>$fav->listing));
}
Run Code Online (Sandbox Code Playgroud)
请注意,用户可能有许多收藏夹,因此您需要使用foreach,除非您不使用CListview.另一种方法是用户Clistview,在这种情况下,您可能需要更改您的查询.让我知道这对您有用.
| 归档时间: |
|
| 查看次数: |
3744 次 |
| 最近记录: |