我正在建立一个平台,访问者可以在该平台上填写表格以请求各个市场的产品和服务报价。
示例:访客 John Doe 希望在他的屋顶上安装太阳能电池板。他访问我们的网站,选择他的类别(太阳能电池板)并填写表格。然后,他的联系方式将发送给我们所有的太阳能电池板供应商。
可以请求报价的所有类别都存储在一个category
表中:
id | name
-------------------
1 | solar panels
2 | car rental
每个类别都有 2 个表格需要填写:
一份表格,其中包含访问者的详细联系方式以及他们希望收到哪个类别的报价。此表单对每个类别都有相同的字段,并存储在一个
inquiry
表中:id | fk_id_category | name | email | Region ---------------------------------------------------------- 1 | 1 | John Doe | johndoe@gmail.com | New York 2 | 2 | Jane Doe | janedoe@gmail.com | California
包含与该类别相关的特定问题的表格。这些存储在一个
category_field
表中:id | fk_id_category | label --------------------------------------------------------------- 1 | 1 | What type of roof do you have? 2 | 2 | What type of car do you want to rent? 3 | 2 | For how long do you want to rent the car?
这些问题的答案存储在一个
inquiry_detail
表中:id | fk_id_inquiry | fk_id_category_field | answer --------------------------------------------------------------- 1 | 1 | 1 | A flat roof 2 | 2 | 2 | An SUV 3 | 2 | 3 | One week
我正在使用 Doctrine 1.2.4,我想了解如何保存特定类别的答案(inquiry_detail
表中的答案)。
目前我有以下解决方案,但我认为应该有更好的方法:将name
每个表单元素的属性设置为表id
中其对应记录的属性category_field
:
<label for="2">What type of car do you want to rent?</label>
<input type="text" name="2" />
<label for="3">For how long do you want to rent the car?</label>
<input type="text" name="3" />
提交表单后,我们遍历$_POST
数组并inquiry_detail
为每个元素创建一个新记录(暂时不要介意fk_id_inquiry
)。
foreach($_POST as $key => $value) {
$inquiryDetail = new Model_Inquiry_Detail();
$inquiryDetail['fk_id_category_field'] = $key;
$inquiryDetail['answer'] = $value;
$inquiryDetail->save();
}