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: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
如果想要修改,做好备份,记住原来的版本号。
所以说本质的确是很简单就可以实现?
gt9000 发表于 2023-8-4 13:19
在末尾处添加一行 ->asc($this->getTable().'.date') 就行,按 name 和 date 排序。
文件路径 ...
首先非常感谢, 下午一直在开会没事
我刚才试了下,还是按文件名排列的,你试下用中文名开头的文件就一直放在最后.....英文名开头的都在中文名前 本帖最后由 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 对结果就行排序。
尝试了下在github上联系作者,但是好像完全没找到私聊 或者 邮箱地址 gt9000 发表于 2023-8-4 20:38
跟字符集有关系。
如果是 mysql 数据库,参考:
我用的是mariadb,应该是mysql的
其实现在最需要的就是完全按照上传的时间排序, 如果时间一样,就按名字排序 本帖最后由 gt9000 于 2023-8-4 20:46 编辑
neotaburiss 发表于 2023-8-4 20:44
我用的是mariadb,应该是mysql的
其实现在最需要的就是完全按照上传的时间排序, 如果时间一样,就按名字排 ...
你应该举个例子,详细描述你的需求。
就像前面的朋友说的
首先你们需要把需求详细的描述出来,最好给出修改前后的需求示意图,而不是开口就是“小修改”
做研发最怕的就是完全不懂代码的人来评估是不是小需求
本帖最后由 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 21:08 编辑
neotaburiss 发表于 2023-8-4 20:55
抱歉, 本身不是IT的,感觉写不清楚自己的要求
我们想实现的效果, 比如
按照上传时间排序,先上传的在前面,后上传的后面吗?
如果是这样,你改成下面这样就好了。
->asc($this->getTable().'.date');
示例图:
说明:日期改成包含时分秒的数据,便于了解排序规则。
本帖最后由 neotaburiss 于 2023-8-4 21:26 编辑
感谢楼上的大神
我发现只要把 ->asc($this->getTable().'.name'); 里面的name改成date就行了
如果两句都保留的话不行.....保留一句排序的就可以了
这不得加个微信打点感谢费? 虽然这次解决了,但是我还是劝你找个商用的迁移过去,毕竟你不是老板,谁也不知道下一个需求是啥
—— 来自 HONOR SDY-AN00, Android 12上的 S1Next-鹅版 v2.5.4
页:
1
[2]