2

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

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

public function rules()
{
    return array(
        ...
        array('isdeleted', 'shouldEqualTo=>0'),
        ...
    );
}

我认为弄乱rules()是一种方法,但它不起作用或者我做错了......

4

2 回答 2

5

您应该为此使用 scopes() 。

public function scopes()
{
    return array('active' => array('condition' => 'isdeleted = 0'));
}

然后

$active = MyModel::model()->active()->findAll();

编辑:

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

public function defaultScope()
{
    return array('condition' => 'isdeleted = 0');
}
于 2014-08-12T10:23:06.757 回答
1

感谢WB我知道要调查的答案scopes,您可以scopesWB一样使用:

public function scopes()
{
    return array('active' => array('condition' => 'isdeleted = 0'));
}

然后使用

$active = MyModel::model()->active()->findAll();

如果您不想更改项目中的代码(像我一样),您可以使用:

public function defaultScope()
{
    return array(
        'condition' => 'isdeleted = 0',
    );      
}

然后使用

$active = MyModel::model()->findAll();
于 2014-08-12T11:58:04.957 回答