ThinkPHP5如何对数组进行分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP5如何对数组进行分页相关的知识,希望对你有一定的参考价值。

参考技术A function array_page($array,$rows) import("ORG.Util.Page"); //导入分页类 $count=count($array); $Page=new Page($count,$rows); $list=array_slice($array,$Page->firstRow,$Page->listRows); return $list; //使用该函数即可实现分页

使用 MongoDB .Net 驱动程序对存储在文档字段中的数组进行分页

【中文标题】使用 MongoDB .Net 驱动程序对存储在文档字段中的数组进行分页【英文标题】:Pagination on array stored in a document field using MongoDB .Net Driver 【发布时间】:2022-01-11 11:09:18 【问题描述】:

如何使用 C# 和 MongoDB .Net 驱动程序在 animals 字段中应用分页?

架构是:

[
    id: 1,
    name: "Tom",
    animals: ["cat", "dog", "fish", "bear", "dog1", "fish1", "bear1",]
,

    id: 2,
    name: "Rob",
    animals: ["shark", "snake", "fish", "bear", "panda"]
,

    id: 3,
    name: "Matt",
    animals: ["cat", "fish", "bear"]
]

here 给出了解决方案,但我发现很难在 C# 中实现。

下面是我的代码

var bsonSearchParams = new BsonDocument 
    new BsonElement ( "id" , id),
    new BsonElement  ( "animals", " $slice: [ 0, 3 ] " )
;
var result = await collection.Find(bsonSearchParams).FirstOrDefaultAsync();
return result;

我期待结果


    id: 1,
    name: "Tom",
    animals: ["cat", "dog", "fish"]

【问题讨论】:

【参考方案1】:

您的 bsonSearchParams 不正确,因为您在投影中包含了 slice 逻辑。

你需要.Slice(),这是ProjectDefinition的扩展方法。

public static ProjectionDefinition<TDocument> Slice<TDocument>(this ProjectionDefinition<TDocument> projection, FieldDefinition<TDocument> field, int skip, int? limit = null)

您的源代码应如下所示:

var bsonSearchParams = new BsonDocument 

    new BsonElement( "id" , id)
;

var bsonProjection = Builders<BsonDocument>.Projection
    .Slice("animals", 0, 3);

var result = await collection.Find(bsonSearchParams)
    .Project(bsonProjection)
    .FirstOrDefaultAsync();

示例代码和输出

【讨论】:

以上是关于ThinkPHP5如何对数组进行分页的主要内容,如果未能解决你的问题,请参考以下文章

再看thinkphp5分页类使用

如何使用聚合在猫鼬中对文档数组进行分页?

如何使用 LINQ 对数组进行分页?

Thinkphp5 分页带参数

thinkphp5如果不用Db类还可以用paginate分页吗

ThinkPH5 SQL注入(Mysql 聚合函数)