Cakephp中的复杂模型结构

Cakephp中的复杂模型结构,cakephp,Cakephp,我正在创建一个网站,允许用户向他们的页面添加许多不同的项目。这些项目可以彼此非常不同,例如文本、图像、数字等。为了处理这个问题,我有一个表,其中为每个项目存储一个条目。该表具有id、项在页面上的位置和项的类型。然后,对于每种类型的项目,我都有一个表,其中包含关于该项目的更具体信息 我想做的是建立一个关联,这样当页面加载时,它就可以按顺序从主表中获取项目——这很简单——然后还可以从特定信息的适当表中获取相关信息 例如,主_表可以是: id | location | type 1

我正在创建一个网站,允许用户向他们的页面添加许多不同的项目。这些项目可以彼此非常不同,例如文本、图像、数字等。为了处理这个问题,我有一个表,其中为每个项目存储一个条目。该表具有id、项在页面上的位置和项的类型。然后,对于每种类型的项目,我都有一个表,其中包含关于该项目的更具体信息

我想做的是建立一个关联,这样当页面加载时,它就可以按顺序从主表中获取项目——这很简单——然后还可以从特定信息的适当表中获取相关信息

例如,主_表可以是:

id   |   location   |   type
 1   |       1      |   text
 2   |       2      |   image
 3   |       3      |   plot
 4   |       4      |   question
文本项的表格可能如下所示:

id    |    text    |
1     |     aaa    |
2     |     bbb    |
id    |   type   |  datasets  |   
1     |    bar   |     3   
2     |  scatter |     2   
图的表格可能如下所示:

id    |    text    |
1     |     aaa    |
2     |     bbb    |
id    |   type   |  datasets  |   
1     |    bar   |     3   
2     |  scatter |     2   
那么,我可以设置一个关联,其中主_数据模型从适当的表中提取一个关联的文件吗?我可以设置一个单独的模型,根据传入的变量和,为特定信息选择表,但我不确定如何将带有类型信息的变量传递给模型,也不确定我是否正确地处理了这个问题

谢谢

PS


我想到了一个显而易见的方法——将这些项合并到一个表中,并为每个条目中与该项无关的所有内容提供空字段。因此,一个文本条目仍然会有用于打印内容的列,但它们不会被填充,等等。然而,我想减少对空间的浪费——除非每个人都认为这样做会更好。

对不起,我没有评论澄清的名声,但这是我对你的问题的看法。我觉得你想得太多了

关于你的问题,有一点很突出,那就是你处理问题的方式会变得非常混乱

在我看来,处理这一问题的最佳方法是为每个项类型指定它自己的表,然后在模型定义中指定关联

这就是您的表的外观,记住CakePHP表需要是复数的,
user\u id
故意这样命名

使用者 问题 阴谋 在应用程序/模型文件夹中,需要名为
User.php
&
Question.php
&
Plot.php
(单数命名约定)的文件

User.php View/Users/index.ctp


在再次阅读您的问题后,您提到“订单”和“位置”。您可以通过向每个不同的表中添加“创建日期”和“页面位置”列来处理此问题。我仍然觉得你的解决方案过于复杂,我希望我没有遗漏什么

很抱歉,我没有评论澄清的名声,但这就是我对你的问题的看法。我觉得你想得太多了

关于你的问题,有一点很突出,那就是你处理问题的方式会变得非常混乱

在我看来,处理这一问题的最佳方法是为每个项类型指定它自己的表,然后在模型定义中指定关联

这就是您的表的外观,记住CakePHP表需要是复数的,
user\u id
故意这样命名

使用者 问题 阴谋 在应用程序/模型文件夹中,需要名为
User.php
&
Question.php
&
Plot.php
(单数命名约定)的文件

User.php View/Users/index.ctp

在再次阅读您的问题后,您提到“订单”和“位置”。您可以通过向每个不同的表中添加“创建日期”和“页面位置”列来处理此问题。我仍然觉得你的解决方案过于复杂,我希望我没有遗漏什么

id | user_id | text 
1  |    1    | this is plot
<?php
    public $hasMany = array(
        'Question',
        'Plot'
        );
?>
<?php
    public $belongsTo = 'User';
?>
<?php
    public $belongsTo = 'User';
?>
<?php
...
    public function index() {
        $this->set('users', $this->paginate());
    }
...
?>
<div>
    <?php 
        foreach ($users as $user): 
            debug($user);
            echo $user['Question']['text'];
            echo $user['Plot']['text'];
        endforeach;
        unset($user);
    ?>
</div>