我試圖通過這些模型保存數據集。PHP:將foreach數據保存在foreach中
模型1:服務
生成一系列服務日期。
模型2:響應
對於每個服務的條目,用戶需要增加的響應的定數。
所以,我想保存多個服務條目以獲得多個響應。代碼相當自我解釋,但如果需要,我可以添加更多信息。我找不到一個簡單的解決方案來做到這一點,儘管我覺得這很簡單。
if (isset($_POST['Service'], $_POST['Response']))
{
$model->attributes = $_POST['Service'];
$valid = $model->validate();
// date manipulation
$start = new DateTime($model->date_booked);
$start->format('Y-m-d');
$end = new DateTime($model->end_date);
$end->format('Y-m-d');
$interval = DateInterval::createFromDateString($model->interval);
$range = new DatePeriod($start, $interval, $end);
if ($valid)
{
foreach ($range as $key => $value)
{
$schedule = new Service;
$schedule->attributes = $_POST['Service'];
$schedule->date_booked = $value->format('Y-m-d');
// If I were to save here, the following, Response Model
// will not be validated!
// $schedule->save();
foreach ($_POST['Response'] as $j => $k)
{
$response[$j] = new Response;
$response[$j]->attributes = $_POST['Response'][$j];
// If I were to save the Service Models here,
// evidently, entries are doubled up!
// $service->save();
$response[$j]->service_id = $service->id;
$valid = $response[$j]->validate() && $valid;
// $response[$j]->save();
}
}
}
}
謝謝!
首先你爲什麼使用嵌套的foreach?嵌套的foreach在php中存在問題。當你想要嵌套循環時,你的代碼應該更好地使用for循環的基本結構。 – Greg
@Greg,我已經使用了foreach,因爲我需要它來訪問DatePeriod。請告知,如果你知道另一種方式。 – Glicious