Yii1中从sessionpublic函数search()获取ID

Get the ID from the session public function search () in Yii1

public function search()
{
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria=new CDbCriteria;
    $criteria->addCondition('id=1');

    $criteria->compare('id',$this->id);
    $criteria->compare('login',$this->login,true);
    $criteria->compare('name',$this->name,true);
    $criteria->compare('password',$this->password,true);
    $criteria->compare('random_pass',$this->random_pass,true);
    $criteria->compare('default_number_of_devices',$this->default_number_of_devices);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
         'sort'=>array('defaultOrder'=>'name ASC',)


    ));
}

我使用 ID 1$criteria->addCondition('id=1') 一样,它不是自动的,只是用 id=1 显示记录,我如何从用户季节登录中获得自动 ID。

public function search()
{
    // @todo Please modify the following code to remove attributes that should not be searched.

    $criteria=new CDbCriteria;
    $sas= Yii::app()->user->id;
    $criteria->addCondition("id=$sas");
    $criteria->compare('id',$this->id);
    $criteria->compare('login',$this->login,true);
    $criteria->compare('name',$this->name,true);
    $criteria->compare('password',$this->password,true);
    $criteria->compare('random_pass',$this->random_pass,true);
    $criteria->compare('default_number_of_devices',$this->default_number_of_devices);
    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
         'sort'=>array('defaultOrder'=>'name ASC',)


    ));
}

desc id 这样的 $sas= Yii::app()->user->id;我觉得 运行

您的 search() 方法已有按用户 ID 过滤的代码:

$criteria->compare('id',$this->id);

你只需要将模型的id属性设置为当前的ID即可。所以你的控制器动作应该是这样的:

$model = new MyModel('search');
if (isset($_POST['MyModel'])) {
    $model->attributes = $_POST['MyModel'];
}
if (Yii::app()->user->isGuest) {
    Yii::app()->user->loginRequired();
}
$model->id = Yii::app()->user->id;

$dataProvider = $model->search();

你不应该在你的模型中直接使用 Yii::app()->user - 它打破了 MVC 模式,你将无法在控制台中使用这种方法。全局状态应该在控制器级别处理并传递给模型。