【发布时间】:2016-07-05 15:10:55
【问题描述】:
我目前正在尝试为项目构建后端。在这个项目中,您将能够创建可用于在页面中显示内容的“ContentElements”(在我的例子中是站点)。每个 ContentElement 都可以有多个选项。当用户使用 ContentElement(例如标题)创建新站点时,他将输入该元素的所有选项。例如:
"src": "/img/bg.jpg",
"text": "Lorem ipsum..."
为了保存每页使用的选项值,我将这些值存储在单独的表中 (content_elements_sites_values)。
我的方案目前如下所示:data scheme
所以我目前正在尝试做的是,当我获取与站点关联的所有数据时,我还想从“content_elements_sites_values”获取数据
$site = $this->Sites->get($id, [
'contain' => ['Templates', 'Colors', 'SiteTypes', 'ContentElements' => [
'ContentElementOptions' => [
'ContentElementsSitesValues'
]
]
],
'conditions' => [
// Just to explain my problem.
'ContentElementsSites.id' => 'ContentElementsSitesValues.content_elements_sites_id'
]
]);
我真的不知道这是否可能,或者即使我的“设计”完全是牛***。但我想不出另一种方法来存储填充的数据。我非常愿意接受有关存储这些数据的更好方法的建议。请询问您是否需要更多信息以帮助我。
提前谢谢你!
编辑
我试图更好地解释我想要实现的目标。
每个站点可以有多个相同类型的content_elements(关联存储在content_elements_sites联结表中)。
每个 content_element 可以有多个 content_element_options
所有 content_element_options 和 content_elements 均由管理员定义。
另一个用户可以创建一个站点并用content_elements填充它,然后为所有content_element_options输入content_elements_sites_value。并且由于相同的 content_element(例如段落或列表)可以在同一个站点中多次出现,我需要存储用户输入的每个 content_elements_sites_value。 p>
这就是我在 content_elements_sites 和 content_element_options 之间创建链接的原因。
目前我正在使用此查询来获取期望值的所有内容:
$site = $this->Sites->find('all', [
'conditions' => [
'Sites.id' => $id
],
'contain' => ['ContentElements' => [
'sort' => [
'ContentElementsSites.order' => 'ASC'
],
'ContentElementOptions' => [
'ContentElementsSitesValues' => [
'conditions' => [
'ContentElementsSitesValues.content_elements_sites_id' => 'ContentElementsSites.id',
]
]
]
]
]
]);
这会导致 content_elements_sites_values
为空(int) 1 => object(App\Model\Entity\ContentElementOption) {
'id' => (int) 7,
'content_element_id' => (int) 1,
'name' => 'Test',
'json_name' => 'test',
'option_type_id' => (int) 1,
'content_elements_sites_value' => null,
}
我的方案目前是这样的:data scheme
我想知道这个查询是否可行。或者如果整个事情太灵活了。
【问题讨论】:
标签: mysql cakephp orm associations cakephp-3.0