Yii问题:
情况:
我使用Yii的gii代码生成器工具生成了一个模型。该模型返回MySQL数据库中给定表中的所有字段。
问题:
我想仅根据用户ID(我从Yii::app()->user->getId()
获得)返回与特定登录用户相关的字段
问题:
如何修改我的模型来执行此操作?
代码:
(我的Model类的'rules'部分)
public function rules()
{
return array(
array('user_id, title, description', 'required'),
array('user_id', 'numerical', 'integerOnly'=>true),
array('description', 'length', 'max'=>255),
array('id, user_id, title', 'safe', 'on'=>'search'),
// Is the solution something like this?
//array('user_id', 'compare', 'user_id'=>Yii::app()->user->getId());
);
}
答案 0 :(得分:1)
您无需修改模型 - 您是如何进行搜索的?如果您想使用Active Record,您可以执行以下操作:
User::model()->find(array('condition'=>'user_id='.Yii::app()->user->getId()));
如果用户ID是主键,则:
User::model()->findByPk(Yii::app()->user->getId());
如果您确实想要将条件添加到模型中,您可能希望使用scope来定义搜索条件,规则用于在提交插入/更新时检查数据。
对于范围,请将此功能放在您的模型中:
public function scopes() {
return array(
'userid'=>array(
'condition' => 't.user_id = ' . Yii::app()->user->getId(),
),
);
}
然后你可以使用这样的东西来获取数据:
User::model()->userid()->find();
(在上面将“User”更改为您的模型名称。)
我强烈建议您阅读db documentation并完成一些教程。