【问题标题】:Sort yii2 expand data in ascending orderyii2展开数据升序排序
【发布时间】:2022-01-06 01:43:36
【问题描述】:

我正在研究 yii2 框架,我有一个 API,我可以从该 API 中从表中获取“组”,它与另一个名为“权限”的表有关系,这个“权限”表有一个外键用于“ group" 表 "group_id" 所以为此 API 是: http://localhost/yii2/backend/web/index.php?r=configuration/permissiongroup&expand=permissions&sort=name 回复: [

{
    "id": 8,
    "name": "group_a",
    "permissions": [
        {
            "id": "34",
            "name": "z",
            "group_id": 8
        },
        {
            "id": "35",
            "name": "x",
            "group_id": 8
        },
        {
            "id": "36",
            "name": "y",
            "group_id": 8
        }
    ]
},
{
    "id": 3,
    "name": "group_b",
    "permissions": [
        {
            "id": "22",
            "name": "b",
            "group_id": 3
        },
        {
            "id": "23",
            "name": "d",
            "group_id": 3
        },
        {
            "id": "24",
            "name": "a",
            "group_id": 3
        }
    ]
},

在这个 API 中,我设法通过在 URL 中添加“sort”参数来按升序对“groups”对象进行排序,但我需要按升序对“permissions”对象进行排序,所以我怎样才能在yii2 框架?

【问题讨论】:

  • 如果您使用的是dataprovider,那么下面的答案也可以使用,否则也会显示查询

标签: php sorting yii2 dataprovider


【解决方案1】:

您可以使用伪属性进行排序并为此设置适当的排序参数。

网址可以是:http://localhost/yii2/backend/web/index.php?r=configuration/permissiongroup&expand=permissions&sort=name2

像这样配置排序:

$dataProvider->sort->attributes['name2'] = [
    'asc'  => [
        'groups.name' => SORT_ASC,
        'permissions.name' => SORT_ASC,
    ],
    'desc' => [
        'groups.name' => SORT_DESC,
        'permissions.name' => SORT_DESC,
    ],
];

【讨论】:

  • 感谢您的回复,但它对我不起作用我不知道为什么,但我在模型中的 Active 查询的帮助下设法实现了这一点。
【解决方案2】:

我已经设法通过“permissionGroup”模型中的主动查询来实现这一点,在该模型中我已经有一个名为“getPermissions”的函数,所以我刚刚下了一个 orderBy 并且它起作用了。

public function getPermissions()
{
    return $this->hasMany(Permission::className(), ['group_id' => 'id'])->orderBy('name ASC');
}

public function extraFields() {
    return ['permissions'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多