使用Yii指定基于ID显示哪些数据

时间:2014-02-22 03:40:21

标签: php mysql yii

我有一个Web应用程序,其中包含指向我的应用程序“album”部分的链接。我现在的问题是它显示为所有用户创建的专辑(这对应用程序中的所有成员都是一样的)。我希望每当登录的用户选择“照片”链接时,他/她就被引导到专辑页面,在那里他们只能看到他们上传的图片。

首先,这是将照片上传到的架构。:

CREATE TABLE IF NOT EXISTS `content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`node_type_id` int(11) DEFAULT NULL,
`party_id` int(11) DEFAULT NULL,
`category` text,
`title` text,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`date_created` datetime DEFAULT NULL,
`date_modified` datetime DEFAULT NULL,
`start_date` datetime DEFAULT NULL,
`end_date` datetime DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`content_id` int(11) NOT NULL,
`country` text NOT NULL,
`view_count` int(11) NOT NULL,
`attribute1` varchar(200) DEFAULT NULL,
`attribute2` varchar(50) DEFAULT NULL,
`liked` text,
`approved` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;

然后这就是正在观看专辑的地方:

    <div class="photodiv">
<?php

    foreach ($albumArr as $album)
    {
    Yii::app()->user->id;
        $image = Image::model()->findByAttributes(array('content_id'=>$album->id, 'attribute1'=>'1'));
        $photos =   Image::model()->findAllByAttributes(array('content_id'=>$album->id));

        echo '<div class="albumdiv">';
        echo '<div class="picdiv">';
        if (!empty($image))
        {
            echo '<a href="'.Yii::app()->createUrl('image/index',array('album'=>$album->content)).'"><img src="'.Yii::app()->baseUrl.'/images/albums/'.$album->content.'/'.$image->id.$image->content.'" height="100px" width="100px" /></a>';
        }
        echo '</div>';
        echo '<br/>';
        echo '<center><a href="'.Yii::app()->createUrl('image/index',array('album'=>$album->content)).'"><h4>'.$album->content.'</h4></a></center>';
        echo count($photos) == 1 ? '<center><h5>'.count($photos).' photo</h5></center>' : '<center><h5>'.count($photos).' photos</h5></center>';
        echo '</div>';
    }
?>
</div>

如果您想知道如何生成它,控制器包含以下内容:

public function actionIndex()
{
        $usertag = isset($_GET['usertag']) ? addslashes($_GET['usertag']) : FALSE;
        $users = new CActiveDataProvider('SystemUser', array(
            'id' => '',
            'criteria' => array(
                    'alias'=>'u',
                    'join'=>'JOIN persons p ON u.party_id = p.party_id JOIN lookup_codes lc ON p.country = lc.id',
                    'condition' => $usertag ? 'status != "Approved" AND company_name LIKE "%'.$usertag.'%" OR status = "'.$usertag.'"' : 'status != "Approved"',
                    //'order'=> 'date_created DESC'
                    'order'=> 'status'
                ),
            'pagination' => array(
                'pageSize' => 100
            )
        ));

        $data = array(
            'dataProvider' => $users
            );

        $this->render('index', $data);
}

索引呈现了我在2个脚本前显示的_view。

我的问题是我不太确定如何仅显示专辑的特定创作者。在这种情况下,'party_id'是标识创建者的ID。

1 个答案:

答案 0 :(得分:0)

好的如果我理解正确,那么我在回答你的问题之前做了一些假设。
1.通常用户表用于登录用户并存储用户名,密码,记忆和其他属性等凭据,但在您的情况下,我假设您使用人员表登录用户。
2.在userIdentity.php中,您使用人员模型进行验证。
那你需要这样做。
首先在UserIdentity.php文件中创建一个函数

public function getId()
{
    return $this->_id;
}

它将返回该人的id。 现在,在您的视图文件中,您可以使用此代码获取登录用户的ID

$id=Yii::app()->user->getId()

现在您可以在

等标准中使用它
 $image = Image::model()->findByAttributes(array('content_id'=>$album->id,'party_id'=>$id, 'attribute1'=>'1'));
 $photos =   Image::model()->findAllByAttributes(array('content_id'=>$album->id,'party_id'=>$id,));

这将为您提供登录用户的结果 修改 您的下一个问题
如果您能够在该链接中显示链接并传递一些用户ID,那么您可以这样做。
1.在您显示用户链接的位置时,将该用户的链接ID传递给

CHtml::link('ViewAlbum',array('controller/userAlbum',array('id'=>userId)))


2.为特定用户创建操作

public function actionUserAlbum($id)
    {
        album=Album::model()->findAllByAttributes(array(
    'id_of_creator_of_album'=>$id;
    ));
    $this->render('someView',array('id'=>$id))

    }

然后在您的视图中使用此ID来获取与该相册相关的照片