Php 科哈纳';通配符';ORM模型

Php 科哈纳';通配符';ORM模型,php,orm,kohana-orm,kohana-3.3,Php,Orm,Kohana Orm,Kohana 3.3,目前,我的应用程序为每个客户创建表格,他们可以在其中存储自己的联系人 这是为每个客户动态创建的,因为他们是自己创建的 例:Customer 1创建了一个名为contacts_1的新表 我有一个名为Contact的ORM模型,我稍微修改了它,允许在使用工厂时传递一个或两个变量 例如:加载联系人对象作为该列表的迭代器 $contact=ORM::工厂('contact',1) 例如:加载特定触点的触点对象 $contact=ORM::工厂('contact',数组(1,1));(第一个变量是列表id

目前,我的应用程序为每个客户创建表格,他们可以在其中存储自己的联系人

这是为每个客户动态创建的,因为他们是自己创建的

例:Customer 1创建了一个名为contacts_1的新表

我有一个名为Contact的ORM模型,我稍微修改了它,允许在使用工厂时传递一个或两个变量

例如:加载联系人对象作为该列表的迭代器 $contact=ORM::工厂('contact',1)

例如:加载特定触点的触点对象 $contact=ORM::工厂('contact',数组(1,1));(第一个变量是列表id,第二个变量是联系人id)

这一切都可以正常工作,但是当试图通过迭代器加载联系人信息时,它没有传递list_id变量,因此无法正确执行创建/更新

但是,当加载单个触点时,它工作正常

我正在寻找关于如何: *这样做会更好,除了为动态创建的每个联系人列表创建单独的ORM模型之外
*如何将list_id变量传递到ORM模型的迭代部分,以便save函数正确执行。

这不是设计数据库的方式。您应该使用一个表,并在其中添加一个
customerId
列(这样您就可以找到属于该客户的联系人)。像您这样将数据分散到表中是很混乱的。把所有的东西都放在一个地方可以让你对它进行推理。谢谢你的反馈。这种方法的挑战在于,客户能够在创建期间指定的标准列之外,为额外数据添加自己的额外列。这会导致不同的模式,而实现和允许这一点的最佳方法似乎是使用单独的表。知道这一点,你还会建议同样的方法吗?使用这种方法,我会将额外的数据存储在单独的表(或单个表)中吗?SQL不能很好地处理任意内容(例如自定义列)。为此,您将使用类似NoSQL数据库的东西。您可以使用SQL来实现这一点,但随着数据库的增长,它最终会变得一团糟。我可能会创建两个单独的表,
contact\u extra\u types(id,typeName)
contact\u extra\u data(id,customerId,typeId,value)
。这样,您可以创建任意数量的自定义类型,并允许它们添加任意数量的自定义字段,同时仍保持正常的模式。这太棒了!我从来没有想过要这样做,你是对的,这会让一个很快变得非常疯狂的人恢复理智!感谢YOU@SverriM.Olsen我知道你从哪里来。但从DB的角度来看,id目前毫无意义,甚至可能造成伤害<代码>角色\u用户没有id(仅用作直通表,因此在Kohana中没有问题)。如果将userId和typeId设置为主键,则可以保证没有用户对同一字段具有两个值-如果它们不是主键,则需要对这对字段设置唯一约束