我的应用程序在 1 个数据库中有 2 个表。一个称为 USER(id、uname、pw、role),另一个称为文件的 USERZ(id、files、USER_id、name)。 两个表都存在 HAS_MANY 和 BELONGS_To 关系。
我可以看到显示用户和所有文件。但我想做的是只查看每个用户的文件(因此 id = 1 的用户无法看到 id = 2 用户的文件)
我的 Controller 如下所示:
<?php
class SiteController extends Controller
{
...
public function actionVerwal()
{
$model=new USER;
$model2=new USERZ;
$this->render('verwal',array('model'=>$model,'model2'=>$model2));
}
...
}
我的 View verwal.php:
<?php
$dataProvider=new CActiveDataProvider($model2);
?>
<h1>List of Your Files<i></h1>
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model2->a($model2->id)
, 'columns'=>array(
'id', 'zname', 'USER_id'
)
));
...
?>
我的模型 USERZ 具有如下所示的功能:
public function a($id)
{ $criteria=new CDbCriteria;
$criteria->compare('USER_id', $id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
所以我得到的是包含所有文件的列表。我不知道如何更改 USER_id 与登录用户的 ID 的比较,以便我可以获得正确的文件,而不是全部
最佳答案
嗯,$criteria->compare('USER_id', $id, true);
为什么在这里使用第三个参数?删除它或设置为 false。
它
$partialMatch whether the value should consider partial text match (using LIKE and NOT LIKE operators). Defaults to false, meaning exact comparison.
要在 Yii 中获取登录的用户 ID,您可以使用 Yii::app()->user->getId();
关于php - 登录用户的 Yii 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746309/