我很难让App Maker尊重多对多关系的顺序。
假设我有两个模型:
模型1具有ID,并且与模型2也具有ID的多对多关系。
应用程序制造商会生成三个表:
DESCRIBE model_1;
+--------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
+--------------------+--------------+------+-----+---------+----------------+
DESCRIBE model_2;
+--------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
+--------------------+--------------+------+-----+---------+----------------+
DESCRIBE model_1_Has_model_2;
+------------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------+------+-----+---------+-------+
| parentModel1_fk | int(11) | NO | MUL | NULL | |
| childModel2_fk | int(11) | NO | MUL | NULL | |
+------------------+---------+------+-----+---------+-------+
现在,我们有一个ID为{1
的model_1对象和三个ID为1, 2, 3
的model_2对象。如果我将model_1.childModel_2
分配给[model_2_ID_1, model_2_ID_2]
,则model_1_Has_model_2
表将包含:
parentModel1_fk | childModel2_fk
--------------------------------
1 | 1
1 | 2
现在假设我使用model_1.childModel_2
拼接model_1.childModel_2.splice(0, 1)
,然后使用model_1.childModel_2.splice(0, 0, model_2_ID_3)
在索引0中插入model_2 ID 3。我希望我的表包含以下内容:
parentModel1_fk | childModel2_fk
--------------------------------
1 | 3
1 | 1
但是它包含相反的内容:
parentModel1_fk | childModel2_fk
--------------------------------
1 | 1
1 | 3
除了清除整个关系然后将其设置为新的预期顺序之外,有什么办法可以阻止此行为?
答案 0 :(得分:0)
简短的回答是“否”。 App Maker只是在创建新记录,而不是重新排列表格。否则,它将必须编辑低于所需插入点的所有记录(这可能是非常耗时的事务)。如果这是所需的功能,则必须手动进行。
我会认真考虑创建自己的联接表,该表将使您拥有更多的列,可以在其中存储所需的排序顺序。