0

我有三张桌子(实际上还有几张,但我只需要三张来解决这个问题)。应用程序、Appattrs 和 Appcats。用 CakePHP 的说法(尽我所能,因为我仍在学习框架)应用程序有许多应用程序和应用程序属于应用程序。简单的。

当我想关联 Appattrs 和 Appcat 时,问题就来了——该关联基于 Appattrs 中的字段值和相应的外键。例如:

如果 appattrs.type = 'appcatid' 那么 appattrs.value 将指向 Appcat 表中的一条记录。

appattrs 表包含静态数据 appattrs.type='dateadded' 和 value='201201011300' 以及外键引用。我不想讨论为什么以这种方式存储数据,我只想弄清楚如何创建关联,让我提取应用程序记录、关联的 attr 记录,然后是带有关联行的 attr 记录从相应的表中。动态地。

在我看来,我应该能够基于查询创建模型,然后关联该模型——我似乎无法弄清楚如何做到这一点。

--

如果我需要发布三个表的架构,我可以。我也可以发布我当前的模型代码,但老实说,现在它只是关联变量,所以我认为它不会让任何人去任何地方。

4

1 回答 1

1

我不明白这个设计背后的逻辑,我想你正在寻找的是动态创建和销毁关联

在 CakePHP Docs 的这一部分,它描述了如何从相应的控制器中关联模型。

因此,例如,当您想将特定数据保存到Appattr模型时,您可以进行一些数据检查并使用bind()方法创建关联。

上面的一个非常抽象的方法是这样的

public function yourmethod() {
     ...
     if ($this->request->data['Appattr']['type'] == 'sometype') {
         $this->Appattr->bindModel(
                array(/*Your association*/ => array(/* Your attributes...*/)
         );
         /* Rest of the logic follows */
     }
 }

这样你就可以完成工作,但很可能最终会在数据库中拥有非常复杂的数据,从而拥有非常复杂的代码。

我希望这有帮助

于 2013-02-24T14:21:59.530 回答