关于数据库应该如何储存用户头像 URL
大家在数据库储存用户头像或图片等文件URL的时候, 是存完整地址还是相对地址的, 例如 http://1.cn/pic/1.jpg 和 pic/1.jpg
现在有两个问题:
- 如果用 http://1.cn/pic/1.jpg 的方式储存的话, 如果遇到更换域名的情况, 那么之前的URL不是都要404了吗, 还有如果要删除文件的话, 显然也不能通过这个URL删除.
- 如果是 pic/1.jpg 方式, 再在model访问器里替换为完整的URL然后输出给前端, 但是有个不爽的地方就是我在其他model里有个需求就是去读取用户头像URL然后储存到这个其他model里的时候发现读取到的URL是经过访问器替换成了完整的URL, 而我期待的是相对URL(pic/1.jpg), 有没有什么方法可以绕过访问器吗?
除了这两种方式还有其它更优雅的方式没
关于 LearnKu
$user->getOriginal('avatar')其实,,你的编辑器有提示的话,你可以输入
$user->get看看会出现哪些方法,,,一般都能找到自己想要的那个,,,如果真的有的话,,,一般采用的是第一种,少了很多问题。就算要更换域名,批量把数据库字段更新一下就好了。
我觉得存相对路径更合适,如果图片和服务器是同域名 给前端返回相对路径就可以了,后期迁移到oss之类的也很方便。
支持存相对路径
相对路径+注解自动补全
$this->attributes['image']
@largezhou 非常感谢, 完全解决了我的疑问. 不过我的编辑器确实是没有补全提示, phpstorm , 求推荐一款能够完美支持 laravel 补全提示的编辑器
@Pariswer
这个确实不会提示,,,因为
::find是通过魔术方法调用的,,第一种, 因为第二种有坑
问题:HTTP 协议中的并发限制及队首阻塞问题
为了解决这个问题, 只能用第一种.
我一般存储图片使用的是: http://img(随机数字).img.com/图片地址
可以去console一下淘宝和狗东 我是借鉴它们的
相关文章
https://juejin.im/post/5b8909036fb9a01a0b3...
@largezhou 装了 ide-helper 扩展包, 也重启了IDE, 但还是提示 Method 'getOriginal' not found. 以前也装过这个扩展, 好像也是因为这个原因后来卸载了
@Pariswer
我刚才把
ide-helper的相关文件都删了,也是可以提示的只是
find方法那里会提示,非静态方法,不应该静态调用,不过还是可以跳转的,,,@largezhou 应该是你在 AdminUser model 里添加了 @method tag 注释了吧. 你跳转过去看看
@largezhou 这IDE遇到遇到 laravel 秒变记事本
AdminUser::query()->get();这样可以自动补齐代码,加一个query()
存相对路径,然后用 Storage 来返回完整路径,可以无缝切换到 OSS 存储
@QJAutumn 蟹蟹
第二种,在配置里添加文件服务器,加上数据库读取出来的绝对地址,当文件服务器改域名的时候,直接改配置。另外,建议能少放进数据库的就少放
第二种,不建议第一种。第一种修改域名太麻烦了,第二种存一个相对地址,写一个方法换取一个完整的地址即可。
@linzening 我赞同第二种,域名放配置文件,后面哪怕是修改,也就是改配置的事;