我正在Yii的一个项目上工作,我希望用户能够更新他的手机"帐户"的信息。我使用的数据库为每个人拥有多个帐户(就此而言,有多个人将使用该系统)。现在,当用户进入"管理他的帐户时#34;他能够管理数据库帐户的所有(而不仅仅是他自己的帐户)。
目前,控制器中的代码如下所示
public function actionAdmin()
{
$model =new Account('search');
$userId = Login::model()->getUserId();
$model->unsetAttributes(); // clear any default values
if(isset($_GET['Account']))
{
$model->attributes=$_GET['Account'];
}
$this->render('admin',array(
'model'=>$model,
));
}
UserId是我想要将数据限制为的ID。
的内容$account = Account::model()->findAll(array("condition"=>"user_id = $userId"));
我不确定如何完成这件事。我环顾四周,我知道有" Criteria"我可以在模型中更新,并且在视图中还有一个"过滤器功能"。我应该使用这两个中的一个来限制显示的帐户吗?或者我可以直接从控制器做一些事情吗?
以下是视图中的代码
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'account-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'user_id',
'name',
'mobile_comp',
'msisdn',
'pin',
'balance',
/*
'company',
*/
array(
'class'=>'CButtonColumn',
),
),
)); ?&GT;
和模型
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('name',$this->name,true);
$criteria->compare('mobile_comp',$this->mobile_comp,true);
$criteria->compare('msisdn',$this->msisdn);
$criteria->compare('pin',$this->pin);
$criteria->compare('company',$this->company,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
答案 0 :(得分:0)
将您的actionAdmin更改为以下
public function actionAdmin()
{
$model =new Account('search');
$userId = Login::model()->getUserId();
$model->unsetAttributes(); // clear any default values
if(isset($_GET['Account']))
{
$model->attributes=$_GET['Account'];
}
$model->user_id = $userId;
$this->render('admin',array(
'model'=>$model,
));
}
以上代码只会加载当前用户记录。
答案 1 :(得分:0)
刚解决 - 与Think Different不同的方式:
在我的模型中,我添加了条件
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.
$criteria=new CDbCriteria;
$userId = Login::model()->getUserId();
$criteria->addCondition(array("condtion"=>"user_id = $userId"));
$criteria->compare('name',$this->name,true);
$criteria->compare('mobile_comp',$this->mobile_comp,true);
$criteria->compare('msisdn',$this->msisdn);
$criteria->compare('pin',$this->pin);
$criteria->compare('company',$this->company,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}