gt9000 发表于 2023-8-4 13:16

自旋 发表于 2023-8-4 12:58
kanboard好像没有记录附件的上传时间。如果要根据上传时间排序,需要增加一个数据表,上传成功的时候更新 ...

    public function create($foreign_key_id, $name, $path, $size)
    {
      $values = array(
            $this->getForeignKey() => $foreign_key_id,
            'name' => substr($name, 0, 255),
            'path' => $path,
            'is_image' => $this->isImage($name) ? 1 : 0,
            'size' => $size,
            'user_id' => $this->userSession->getId() ?: 0,
            'date' => time(),
      );

      $result = $this->db->table($this->getTable())->insert($values);

      if ($result) {
            $file_id = (int) $this->db->getLastId();
            $this->fireCreationEvent($file_id);
            return $file_id;
      }

      return false;
    }

有个 date 字端 的

gt9000 发表于 2023-8-4 13:19

本帖最后由 gt9000 于 2023-8-4 13:25 编辑

    protected function getQuery()
    {
      return $this->db
            ->table($this->getTable())
            ->columns(
                $this->getTable().'.id',
                $this->getTable().'.name',
                $this->getTable().'.path',
                $this->getTable().'.is_image',
                $this->getTable().'.'.$this->getForeignKey(),
                $this->getTable().'.date',
                $this->getTable().'.user_id',
                $this->getTable().'.size',
                UserModel::TABLE.'.username',
                UserModel::TABLE.'.name as user_name'
            )
            ->join(UserModel::TABLE, 'id', 'user_id')
            ->asc($this->getTable().'.name')
            ->asc($this->getTable().'.date');
    }
在末尾处添加一行 ->asc($this->getTable().'.date') 就行,按 name 和 date 排序。
文件路径 kanboard/app/Model/FileModel.php

如果想要修改,做好备份,记住原来的版本号。

raimouse 发表于 2023-8-4 17:27

所以说本质的确是很简单就可以实现?

neotaburiss 发表于 2023-8-4 18:47

gt9000 发表于 2023-8-4 13:19
在末尾处添加一行 ->asc($this->getTable().'.date') 就行,按 name 和 date 排序。
文件路径 ...

首先非常感谢, 下午一直在开会没事

我刚才试了下,还是按文件名排列的,你试下用中文名开头的文件就一直放在最后.....英文名开头的都在中文名前

gt9000 发表于 2023-8-4 20:38

本帖最后由 gt9000 于 2023-8-4 20:44 编辑

neotaburiss 发表于 2023-8-4 18:47
首先非常感谢, 下午一直在开会没事

我刚才试了下,还是按文件名排列的,你试下用中文名开头的文件就一直放 ...
跟字符集有关系。

如果是 mysql 数据库,参考:
https://juejin.cn/post/6995834012660924423

https://dev.mysql.com/doc/mysql- ... harset-gb18030.html

如果是 sqlite 数据,参考:
https://stackoverflow.com/questi ... nglish-using-sqlite

---

我试了下,是这样排序的。你希望的结果是怎样的?如果只是希望中文名称的文件排在前面,改为 desc 降序排序就行了。
另一种思路,通过 PHP 对结果就行排序。



neotaburiss 发表于 2023-8-4 20:41

尝试了下在github上联系作者,但是好像完全没找到私聊 或者 邮箱地址

neotaburiss 发表于 2023-8-4 20:44

gt9000 发表于 2023-8-4 20:38
跟字符集有关系。

如果是 mysql 数据库,参考:


我用的是mariadb,应该是mysql的

其实现在最需要的就是完全按照上传的时间排序, 如果时间一样,就按名字排序

gt9000 发表于 2023-8-4 20:44

本帖最后由 gt9000 于 2023-8-4 20:46 编辑

neotaburiss 发表于 2023-8-4 20:44
我用的是mariadb,应该是mysql的

其实现在最需要的就是完全按照上传的时间排序, 如果时间一样,就按名字排 ...
你应该举个例子,详细描述你的需求。
就像前面的朋友说的

首先你们需要把需求详细的描述出来,最好给出修改前后的需求示意图,而不是开口就是“小修改”

做研发最怕的就是完全不懂代码的人来评估是不是小需求

neotaburiss 发表于 2023-8-4 20:55

本帖最后由 neotaburiss 于 2023-8-4 20:56 编辑

gt9000 发表于 2023-8-4 20:44
你应该举个例子,详细描述你的需求。
就像前面的朋友说的
抱歉, 本身不是IT的,感觉写不清楚自己的要求

我们想实现的效果, 比如

A 10:00 上传了文件 名字 99999
B 10:01 上传了文件 名字 画画
C 10:02 上传了文件 名字 AAAAA
D 10:03 上传了文件 名字 00000

看板里面显示的应该就是(按顺序)

文件名   创建者   日期      大小
99999      A    2023/08/04   4kb
画画       B    2023/08/04   4kb
AAAAA      C    2023/08/04   4kb
00000      D    2023/08/04   4kb

gt9000 发表于 2023-8-4 20:59

本帖最后由 gt9000 于 2023-8-4 21:08 编辑

neotaburiss 发表于 2023-8-4 20:55
抱歉, 本身不是IT的,感觉写不清楚自己的要求

我们想实现的效果, 比如

按照上传时间排序,先上传的在前面,后上传的后面吗?

如果是这样,你改成下面这样就好了。
->asc($this->getTable().'.date');

示例图:

说明:日期改成包含时分秒的数据,便于了解排序规则。

neotaburiss 发表于 2023-8-4 21:19

本帖最后由 neotaburiss 于 2023-8-4 21:26 编辑

感谢楼上的大神
我发现只要把 ->asc($this->getTable().'.name'); 里面的name改成date就行了

如果两句都保留的话不行.....保留一句排序的就可以了

regalia 发表于 2023-8-5 12:21

这不得加个微信打点感谢费?

无念 发表于 2023-8-5 13:14

虽然这次解决了,但是我还是劝你找个商用的迁移过去,毕竟你不是老板,谁也不知道下一个需求是啥

—— 来自 HONOR SDY-AN00, Android 12上的 S1Next-鹅版 v2.5.4
页: 1 [2]
查看完整版本: [S1上就解决了!!]一个开源PHP项目,哪里去找人修改代码