我有一个“列表”对象,它有id,name,description等属性,可以通过load($ id)方法加载。
它也有一些高级属性。例如,多个产品(这是一个单独的对象)。为了提高性能,我在尝试使用listing-> getProducts()访问它们时加载它们。
现在我想在列表中使用save方法,将值保存回MySQL数据库。但我不确定如何以干净的方式保存产品。 最好的方法是向产品对象添加一个save方法,并从列表对象中调用它,但这只保存值。如何处理添加/删除的产品?这必须通过我认为的列表对象来完成。但我怎么知道是否所有产品都被删除了,或者它们是否被加载(因为它们没有被访问)?
所有方式,如存储布尔加载的产品,似乎都是一个愚蠢的解决方案。你有一个好主意如何处理它?我并不缺乏编码经验,但我想改进我的结构,因为如果项目变大,我总会在很多代码混乱中结束。
答案 0 :(得分:0)
我假设我们正在谈论在数据库中添加,编辑和删除产品。所以你可能需要一个'插入'方法和删除'方法(从列表视图中调用)。以及' save'以及(更新)方法。
但问题是,或者我理解的是,您不知道在特定产品系列中使用哪些产品。
如果您只是允许用户在输入字段中输入willy nilly,那么您无法判断这是编辑,插入还是删除(或者您正在编辑或删除的产品,如果您允许/每个/字段被更改,那么您的生活将变得非常复杂 - 从业务需求/ UI设计的角度来看,这是否必要?
考虑将现有信息列为只读并提供编辑/插入/删除按钮等内容。
答案 1 :(得分:0)
我认为我自己找到了一种或多或少的好方法。
对于第一个问题(在哪里保存什么):
在listing->save()
方法中存储列表的基本属性,
调用listing->products[]->save()
来存储产品详细信息,
在listing->save()
中同步列表< - >产品关联。
第二个问题(删除产品,只因为没有加载):
这很简单,listing->products = null
- >未加载,listing->products = array()
- >加载,但空着。 (我早点应该这样做,哈哈)