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