私は、訪問者がフォームに記入して、さまざまな市場の製品やサービスの見積もりを要求できるプラットフォームを構築しています。
例: 訪問者の John Doe は、屋根にソーラー パネルを設置したいと考えています。彼は私たちのウェブサイトにアクセスし、自分のカテゴリー (ソーラーパネル) を選び、フォームに記入します。その後、彼の連絡先の詳細は、すべてのソーラー パネル サプライヤーに送信されます。
見積もりをリクエストできるすべてのカテゴリは、category
テーブルに保存されます。
id | name
-------------------
1 | solar panels
2 | car rental
各カテゴリには、記入する必要がある 2 つのフォームがあります。
訪問者の連絡先の詳細と、見積もりを受け取りたいカテゴリが記載された 1 つのフォーム。このフォームには、すべてのカテゴリに同じフィールドがあり、
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
そのカテゴリに関連する特定の質問を含む 1 つのフォーム。これらは
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();
}