在Yii中隐藏软删除的项目

Fer*_*dau 2 php soft-delete yii

我想知道的是:在Yii中是否可以在模型中添加某种属性,因此只显示属性isdeleted设置为的项目0

所以我正在寻找一种方法,Yii会忽略这些项目的实例...类似于:

public function rules()
{
    return array(
        ...
        array('isdeleted', 'shouldEqualTo=>0'),
        ...
    );
}
Run Code Online (Sandbox Code Playgroud)

我觉得乱搞rules()将是一种方式,但它不起作用或我做错了...

W.B*_*.B. 5

您应该使用scopes().

public function scopes()
{
    return array('active' => array('condition' => 'isdeleted = 0'));
}
Run Code Online (Sandbox Code Playgroud)

然后

$active = MyModel::model()->active()->findAll();
Run Code Online (Sandbox Code Playgroud)

编辑:

如果要使过滤器默认,请实现defaultScope()函数:

public function defaultScope()
{
    return array('condition' => 'isdeleted = 0');
}
Run Code Online (Sandbox Code Playgroud)