gpt4 book ai didi

php - 如何按状态过滤我的用户列表? - Yii

转载 作者:可可西里 更新时间:2023-11-01 01:03:34 26 4
gpt4 key购买 nike

我使用 Yii 框架,我想按状态过滤我的用户列表。状态由数字定义:

  • 0:启用
  • 1:禁止
  • 2:禁用

因此显示正确的状态我使用函数 itemAlias () :

public static function itemAlias($attribute, $value=null) {

$_items = array(
'status' => array(
'0' => Yii::t("status", 'Enabled'),
'1' => Yii::t("status", 'Banned'),
'2' => Yii::t("status", 'Disabled'),
),
);

if (isset($value))
return isset($_items[$attribute][$value]) ? $_items[$attribute][$value] : false;
else
return isset($_items[$attribute]) ? $_items[$attribute] : false;
}

因此,当查看用户时,会显示我的状态良好(例如:“已启用”),但是当我想按状态过滤时,我必须使用 1、2 或 3 进行过滤。

我想知道是否可以按状态(活跃、禁止、禁用)进行过滤?

最佳答案

当然可以。您可以创建如下范围:

public function scopes()
{
return array(
'enabled' => array(
'condition' => 'status=0',
),
'banned' => array(
'condition' => 'status=1',
),
);
}

然后在你的查询中你会得到类似的东西:

$activeUsers = User::model()->enabled()->findAll();
$bannedUsers = User::model()->banned()->findAll();

此外,您还可以命名作用域:

public function statusIs($status)
{
// you can accept a status string here and translate it in an integer, your choice.
return $this->getDbCriteria()->mergeWith(array(
'condition' => 'status = '.(int)$status
));
}

并在您的查询中使用它,例如:

User::model()->statusIs(0)->findAll();// get all enabled

此外,您还可以使用范围查询相关模型,例如:

Posts::model()->with('users:enabled')->findAll();

应该也可以。

看看http://www.yiiframework.com/doc/guide/1.1/en/database.ar#named-scopes并查看更多。

L.E:

public function getStatuses()
{
return array(
'0' => Yii::t("status", 'Enabled'),
'1' => Yii::t("status", 'Banned'),
'2' => Yii::t("status", 'Disabled'),
);
}

public function getStatusesDropDown(array $htmlOpts = array())
{
return CHtml::activeDropDownList($this, 'status', $this->getStatuses(),$htmlOpts);
}

现在您有了下拉代码,在您的 CActiveForm 或任何其他表单中,您可以显示此状态下拉列表,例如:

echo $model->getStatusesDropDown();

当您从下拉列表中选择状态并提交表单时,将提交名为 YourModel[status] 的输入。这将具有 0 或 1 或 2 的值。接下来,在您的 search() 方法中,您必须:

public function search()
{
$criteria = new CDbCriteria;
[...]
if ($this->status !== null && (int)$this->status >= 0) {
$criteria->compare('status', (int)$this->status);
}
[...]
}

差不多就是这些了。<​​/p>

关于php - 如何按状态过滤我的用户列表? - Yii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16791790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com