Submitted by gouki on 2025, March 29, 1:12 AM
如果想偷懒用 cloudflare 的 https 来做为网站的 https,这时候你的后台或者你的网站采用了 livewire/filamentphp,那么问题还是不少的
1、极有可能你会出现部分 js,加载的时候还是 http,这时候要做两步处理:强制 schema 为 https,还有就是增加 ASSET_URL 为你的 https 的域名
2、上传文件时,可能会遇到 401,这是因为从 cf 过来。就是在代理后面,你可以在 middleware 中增加:$middleware->trustProxies(at: '*');
这两个都是大问题,而且平时还看不太出,开发的时候也不会遇到,只有在部署上线的时候才会有这样的问题
PHP | 评论:0
| 阅读:67
Submitted by gouki on 2025, February 15, 3:55 PM
为了快速恢复数据,选择了没有外键之类的。结果导致所有的主键丢失、外键丢失(外键是我自己选择不要的,因为写 PHP 的代码的早期,全是靠程序来处理外键。很少用 foreign-key 的)。
但主键没有确实有点意外,不过还好。数据表不多,加起来就行了
---
等会去看一下 DDL 相关,是不是我在复制和恢复的时候没有主动打勾。但数据已经加了两条我就先不管其他的了(只是做一下操作看看原因。)
----
确实是操作失误,在迁移数据的时候选择了 data only,忽略了数据库结构。所以要这样做
1、先复制 DDL,创建完表
2、再 COPY 数据,DATA ONLY。这样就 OK 了
3、
PHP | 评论:0
| 阅读:664
Submitted by gouki on 2025, February 15, 3:39 PM
这次的丢数据确实挺意外。
我是在执行 migrate 的时候。他居然直接清空了所有的表。所以这个还是要慎重(原来的项目是 sablog ,新项目用 laravel 来管理的时候,因为没有 migration 文件,他居然先 truncate table 了),这个很纠结。
还好,我用的是腾讯云的轻量云。他可以按时间点恢复备份。还好我最后一篇是 13 号的,所以我恢复到了 14 号的数据。基本上算丢失一天的内容(其实也只有评论了)。
后续对这些数据我还是要考虑一下如何备份,因为平时默认我没有备份数据库的习惯。
顺便说一下,轻量数据库还是挺合算的费用不高,还有这么多功能,比直接自己本地装一个 mysql 合适多了。
PHP | 评论:0
| 阅读:611
Submitted by gouki on 2025, January 25, 12:22 AM
用 Laravel 处理大量数据时,如果不用 chunk 基本上就是卡成狗,毕竟你不可能在数万条、数十万条数据,光是请求回来都要花很长时间 ,因此,chunk 100 条或者 50 条,反而是效果更高
网上的一些例子都是建议 chunk,而不是 chunkById。但事实上你使用 chunk 的时候,也需要 orderby 一下,否则你也不清楚你的 where 条件出来的数据会是怎样的排序。而且 chunk 还有个问题就是你的每次更新其实不是实时的,当你在处理下一个 chunk 的时候,你可能还在 update 上一个 chunk 的数据。
经过测试 20000 条数据处理,order by id ,再 chunk(100),数据处理的时候会断开【即:处理到 10000 条左右的时候 就结束了,没有任何报错。】,然后再执行,就剩 5000 条左右,再执行剩 2500 左右。
测试用 chunkById,chunk(100),一次就全部处理完后,就没有丢过数据,其实看代码也能够比较明显的,其实 chunkById 才应该是我们的正常用法,因为他会获取上次取完的最后一条 ID,再处理 $count 的值。
---EOF
PHP | 评论:0
| 阅读:674
Submitted by gouki on 2024, December 15, 11:02 AM
Filament 自带的日期组件在实际使用的时候功能还是相对比较少,因此在看到有 flatpickr 插件提供后,就想着替换了他。替换后发现功能确实达到我想要的,但带来的另一个问题是,纯英文的,语言包无法使用。即使显式的传入'local'=>'zh'也没用。
为此翻看源码,结果发现,作者在 2 年前就不维护了,直接更新 PHP 和 blade 模板发现都无效。检查他整体代码后,发现只能通过重新编译他的 filament-component 来解决
于是做了以下几步
1、将项目拷贝到 /plugins/下
2、在 composer.json 里指定路径
3、将 "coolsam/flatpickr": 的版本,改成"@dev",
4、重新 composer u
5、进入 flatpickr 的项目,pnpm i,安装 Esbuild,修改 resources/js/components/flatpickr.js,在顶部 import flatpickrLocales from 'flatpickr/dist/l10n';
然后,在 this.fp = xxx 的上一行加入:flatpickr.localize(flatpickrLocales)
这是因为 flatpickr 对就在的是 FlatPickrFn,具体的几个方法可以点击 import flatpickr from "flatpickr"; 进行查看
6、重新 node bin/build.js
虽然这时候生成了,但并不会更新到 public 里,还需要手工执行 php artisan filament:assets
至此,更新成功
然后在调用的组件里引入:customConfig(['locale'=>'zh'])即可。测试了一下 zh_tw 也没问题
PHP代码
- Flatpickr::make('created_at')->label(创建日期')
- ->customConfig([
- 'locale' => 'zh',
- ])->monthSelect(),
So easy。
---EOF---
因为比较懒,所以没有 PR 到原库,同时也没有自己根据原库弄个新库
Tags: filament, flatpickr
PHP | 评论:0
| 阅读:1045