>我有三个表
1) tbl_users -> ID、名称
2) tbl_entries -> ID、标题、详细信息user_id
2) tbl_favorites -> id、user_id、entry_id
我只想使用 Yii 获取任何用户的所有收藏条目。
我正在使用数据提供者来实现它,它提供了条目表的所有记录,但我只想显示那些添加到收藏夹表中的记录。
$dataProvider = new CActiveDataProvider('Entries', array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => 15,
),
));
请帮忙。
我刚刚出于相同目的获得了 MySQL 查询,但想以 Yii 风格实现
SELECT * FROM tbl_entries, tbl_favorites where tbl_entries.id = tbl_favorites.entry_id and tbl_favorites.user_id = xx
解决这个问题的关键是通过正确定义你的模型关系(这个维基帖子也很好),我不确定你的业务逻辑,但我会假设以下内容:
-
用户
has-many
条目 -
用户
has-many
收藏夹 -
用户
belongs-to
条目 -
条目
has-one
收藏夹 -
最喜欢的
belongs-to
词条 -
最喜欢的
belongs-to
用户
提示:命名您的关系,以便以后有意义,例如 #1 应该是条目,而 #3 应该是条目
因此,拥有user_id
您需要:
- 获取用户记录
- 获取用户收藏夹
- 对于 (2) 中的所有结果,获取相应的条目
代码将如下所示:
$user = User::model()->findByPk($user_id); //Fetch user record
$favorites = $user->favorites; // Fetch the user favorites using relations #2 & #6
// Getting entries
$entries = array(); // empty array to store entries
foreach($favorites as $fav) do
{
$entries[] = $fav->entry; // Fetch entry record using relations #4 & #5
}
....
// Pass $entries array to your view