找回密码
 立即注册
搜索
楼主: neotaburiss

[软件] [S1上就解决了!!]一个开源PHP项目,哪里去找人修改代码

[复制链接]
     
发表于 2023-8-4 13:16 | 显示全部楼层
自旋 发表于 2023-8-4 12:58
kanboard好像没有记录附件的上传时间。如果要根据上传时间排序,需要增加一个数据表,上传成功的时候更新 ...
  1.     public function create($foreign_key_id, $name, $path, $size)
  2.     {
  3.         $values = array(
  4.             $this->getForeignKey() => $foreign_key_id,
  5.             'name' => substr($name, 0, 255),
  6.             'path' => $path,
  7.             'is_image' => $this->isImage($name) ? 1 : 0,
  8.             'size' => $size,
  9.             'user_id' => $this->userSession->getId() ?: 0,
  10.             'date' => time(),
  11.         );

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

  13.         if ($result) {
  14.             $file_id = (int) $this->db->getLastId();
  15.             $this->fireCreationEvent($file_id);
  16.             return $file_id;
  17.         }

  18.         return false;
  19.     }
复制代码


有个 date 字端 的
回复

使用道具 举报

     
发表于 2023-8-4 13:19 | 显示全部楼层
本帖最后由 gt9000 于 2023-8-4 13:25 编辑
  1.     protected function getQuery()
  2.     {
  3.         return $this->db
  4.             ->table($this->getTable())
  5.             ->columns(
  6.                 $this->getTable().'.id',
  7.                 $this->getTable().'.name',
  8.                 $this->getTable().'.path',
  9.                 $this->getTable().'.is_image',
  10.                 $this->getTable().'.'.$this->getForeignKey(),
  11.                 $this->getTable().'.date',
  12.                 $this->getTable().'.user_id',
  13.                 $this->getTable().'.size',
  14.                 UserModel::TABLE.'.username',
  15.                 UserModel::TABLE.'.name as user_name'
  16.             )
  17.             ->join(UserModel::TABLE, 'id', 'user_id')
  18.             ->asc($this->getTable().'.name')
  19.             ->asc($this->getTable().'.date');
  20.     }
复制代码

在末尾处添加一行 ->asc($this->getTable().'.date') 就行,按 name 和 date 排序。
文件路径 kanboard/app/Model/FileModel.php

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

使用道具 举报

     
发表于 2023-8-4 17:27 | 显示全部楼层
所以说本质的确是很简单就可以实现?
回复

使用道具 举报

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

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

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

使用道具 举报

     
发表于 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 对结果就行排序。
image.png


回复

使用道具 举报

     
 楼主| 发表于 2023-8-4 20:41 | 显示全部楼层
尝试了下在github上联系作者,但是好像完全没找到私聊 或者 邮箱地址
回复

使用道具 举报

     
 楼主| 发表于 2023-8-4 20:44 | 显示全部楼层
gt9000 发表于 2023-8-4 20:38
跟字符集有关系。

如果是 mysql 数据库,参考:

我用的是mariadb,应该是mysql的

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

使用道具 举报

     
发表于 2023-8-4 20:44 | 显示全部楼层
本帖最后由 gt9000 于 2023-8-4 20:46 编辑
neotaburiss 发表于 2023-8-4 20:44
我用的是mariadb,应该是mysql的

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

你应该举个例子,详细描述你的需求。
就像前面的朋友说的

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

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

回复

使用道具 举报

     
 楼主| 发表于 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
回复

使用道具 举报

     
发表于 2023-8-4 20:59 | 显示全部楼层
本帖最后由 gt9000 于 2023-8-4 21:08 编辑
neotaburiss 发表于 2023-8-4 20:55
抱歉, 本身不是IT的,感觉写不清楚自己的要求

我们想实现的效果, 比如

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

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


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

回复

使用道具 举报

     
 楼主| 发表于 2023-8-4 21:19 | 显示全部楼层
本帖最后由 neotaburiss 于 2023-8-4 21:26 编辑

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

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

使用道具 举报

     
发表于 2023-8-5 12:21 | 显示全部楼层
这不得加个微信打点感谢费?
回复

使用道具 举报

     
发表于 2023-8-5 13:14 来自手机 | 显示全部楼层
虽然这次解决了,但是我还是劝你找个商用的迁移过去,毕竟你不是老板,谁也不知道下一个需求是啥

—— 来自 HONOR SDY-AN00, Android 12上的 S1Next-鹅版 v2.5.4

评分

参与人数 1战斗力 +1 收起 理由
trentswd + 1 确实

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-21 05:30 , Processed in 0.301516 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表