将php对象加载/保存到mysql数据库

3zwjbxry  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(421)

我有一个“listing”对象,它有id、name、description等属性,可以通过load($id)方法加载。
它也有一些高级属性。例如,多个产品(这是一个单独的对象)。为了提高性能,当您尝试使用listing->getproducts()访问它们时,我会加载它们。
现在我需要清单中的save方法,将值保存回mysql db。但我不知道如何以一种干净的方式节约产品。最好的方法是向products对象添加一个save方法,并从listing对象调用它,但这只保存值。如何处理添加/删除的产品?我认为这必须由列表对象来完成。但是我如何知道是否所有的产品都被删除了,或者它们甚至没有被加载(因为它们没有被访问)?
不管怎样,像存储布尔加载的产品似乎都是一个愚蠢的解决方案。你知道怎么处理吗?我并不缺乏编码方面的经验,但我想改进我的结构,因为如果项目越做越大,我的代码总是乱七八糟。

5m1hhzi4

5m1hhzi41#

我想我自己找到了一个好办法。
对于第一个问题(在哪里保存什么):将清单的基本属性存储在 listing->save() 方法,调用 listing->products[]->save() 要存储产品详细信息,请同步 listing->save() .
第二个问题(删除产品,仅仅因为它们没有加载):这很简单, listing->products = null ->未加载, listing->products = array() ->已加载,但为空(我应该早点拿到这个,哈哈)

5gfr0r5j

5gfr0r5j2#

我想我们讨论的是在数据库中添加、编辑和删除产品。因此,您可能需要一个“insert”方法和一个“delete”方法(从列表视图调用)。以及“save”(更新)方法。
但问题是,或者我理解的是,你不知道在特定的生产线上使用哪一种。
如果你只是允许用户随意地在输入字段中输入,这样你就无法判断这是编辑、插入还是删除(或者你确实在编辑或删除哪个产品,如果你允许/every/field被更改),那么你的生活真的很复杂-这有必要吗,从业务需求/ui设计的Angular 来看?
可以考虑列出只读的现有信息和提供编辑/插入/删除按钮。

相关问题