大家有没有在实际项目中用过 laravel-medialibrary 这个扩展包
一直知道这个包挺牛叉,这次项目想用他试试,但是刚开始就遇见一个觉得很致命的问题,想问下使用过的大神们都是如何处理的
比如我产品模型实现 laravel-medialibrary 的 HasMedia 接口,当给产品添加图片时,就会自动在 media 表存一条记录,model_type = product, model_id = 产品 id
但是当我下单购买这个产品时,我如何把这个产品的图片记录到订单商品表中呢?
目前想到的办法有如下几种,但是感觉都不太行
下单时订单表不存图片信息,显示图片时,直接关联商品去拿图片
这样做是简单了,但是产品被删,订单的图片就丢失了
下单时,拿到产品的图片,将图片移动到订单相关的一个目录中(如果之前已经移动过了,就不处理),把图片地址存入订单表
样做可以保证如果产品被删除了(关联的图片也会被删除 扩展包默认的处理方式),订单上的图片还能照常显示,但是图片还是会存在冗余,并且这逻辑有点怪怪的
下单时,复制购买商品的 media 图片信息,然后再在 media 表添加一条新纪录,关联订单
这样不怕产品删除了,但是这个商品如果被购买了很多次,media 将有大量关联订单的冗余数据
再建一个 media_order 表,记录订单 和购买的那条产品 media 的关系,订单也读同一条media 记录,然后如果要删除产品,判断 media_order 表是否有要删除图片相关的记录,如果有,就不删除 media
这样只要产品被购买过,那 media 几乎无法被正常删除了,并且media 关联的产品都已经丢了,数据上就不完整
为了用这个包也是绞尽脑汁了,有没有大神指点一二,感谢
目前国内设计思维好像都是这样的:建一个 media 表,表中直接存入 url,和一些信息,再写一个 media 管理页面,然后上传图片时候,打开 media 管理页,然后从里面选择要使用的图片或者上传新的,选择完之后,把图片 url 存入比如 产品表中;也就是 产品和 media 是没有任何关系的
感觉 laravel-medialibrary 有点不符合国内使用习惯
推荐文章: