gpt4 book ai didi

php - Yii - CActiveDataProvider 使用关系

转载 作者:可可西里 更新时间:2023-11-01 00:02:31 24 4
gpt4 key购买 nike

我正在尝试使用关系作为标准的一部分来创建 CActiveDataProvider。我有以下内容:

用户模型:

return array(
'favourites'=>array(self::HAS_MANY, 'UserFavourite', 'user_id', 'order'=>'added_at DESC'),
);

用户最喜欢的模型:

return array(
'user'=>array(self::BELONGS_TO, 'User', 'user_id'),
'listing'=>array(self::BELONGS_TO, 'Listing', 'listing_id'),
);

Controller (查看收藏夹操作):

$user = $this->loadUser(Yii::app()->user->id);

如何在我的用户模型中创建一个 CActiveDataProvider 以获取当前用户的所有 favorites - 以及相关的 listing 模型数据每个最爱?所以我想做一些类似 $favourites = $user->getFavourites(); 的事情。

CActiveDataProvider 应该返回一个Listing 对象数组。它应该支持分页和排序——默认排序将是 added_at DESC

我已经尝试使用 CDbCriteriawith 选项,但这似乎不起作用......

最佳答案

你没有提供你的数据库模式,但我想这段代码可以工作,

$criteria=new CDbCriteria();
$criteria->with=array('favourites'=>array('with'=>'listing'));
$dataProvider= new CActiveDataProvider('User', array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'t.added_at DESC',
)));

请确保您的关系正确且符合架构。

  • 事实上,如果你不关心查询的数量,你总是可以调用类似

    的东西

    $user->收藏夹;

它将返回正确关系的正确数据,同样你可以这样做

为了,像这样通过listing模型去查看

foreach($user->favourites as $fav){

$this->renderPartial("PATH TO YOUR VIEW",array('data'=>$fav->listing));

}

请注意,一个用户可能有很多收藏夹,因此您需要使用 foreach ,除非您没有使用 CListview。另一种方法是使用 Clistview,在这种情况下您可能需要更改查询。让我知道这对您有何帮助。

关于php - Yii - CActiveDataProvider 使用关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25415327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com