如何修改模型以返回特定的db字段?

时间:2011-09-13 21:24:09

标签: php mysql yii

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());
  );
}

1 个答案:

答案 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并完成一些教程。