Php Yii已登录用户的私钥
我的应用程序在1db中有2个表。一个称为USER(id,uname,pw,role),另一个称为USERZ(id,files,USER_id,name),用于文件。 这两个表都有一个HAS\u MANY并属于\u的关系 我可以看到显示用户和所有文件。但我要做的是只查看每个用户的文件(因此id=1的用户无法查看id=2的用户的文件) 我的控制器如下所示:Php Yii已登录用户的私钥,php,mysql,yii,Php,Mysql,Yii,我的应用程序在1db中有2个表。一个称为USER(id,uname,pw,role),另一个称为USERZ(id,files,USER_id,name),用于文件。 这两个表都有一个HAS\u MANY并属于\u的关系 我可以看到显示用户和所有文件。但我要做的是只查看每个用户的文件(因此id=1的用户无法查看id=2的用户的文件) 我的控制器如下所示: <?php class SiteController extends Controller { ... public func
<?php
class SiteController extends Controller
{
...
public function actionVerwal()
{
$model=new USER;
$model2=new USERZ;
$this->render('verwal',array('model'=>$model,'model2'=>$model2));
}
...
}
public function a($id)
{ $criteria=new CDbCriteria;
$criteria->compare('USER_id', $id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
所以我得到的是一个包含所有文件的列表。我不知道如何更改“仅将用户id与登录用户的id进行比较”,这样我就可以获得rigt文件,而不是所有文件(Hmmm,
$criteria->compare('USER\u id',$id,true))代码>为什么在这里使用第三个参数?将其删除或设置为false。
其
部分匹配是否该值应考虑部分文本
匹配(使用LIKE和notlike运算符)。默认为false,表示
精确的比较
要在Yii中获取登录的用户id,可以使用Yii::app()->user->getId()代码>我删除了它,这是我想测试的另一件东西留下的。但这并没有改变任何事情。感谢您的解释,我将--“数据提供者”=>$model2->a($model2->id)--更改为“数据提供者”=>$model2->a(Yii::app()->user->getId()),但现在没有匹配的id。。。我想这是因为如果我回显Yii::app()->user->getId(),我会得到idHmm的uname instad,它不应该如此。。。检查UserIdentity类并搜索保存到id($this->\u id)属性的内容。您是指在我的authenticate()方法中吗?--因为在我的UserIdentity.php中只有两个函数。第一个名为authenticate(),第二个名为getId()。
public function a($id)
{ $criteria=new CDbCriteria;
$criteria->compare('USER_id', $id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}