We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

Saving one-to-Many relation data in phalcon

I have a Model Course with many relationship with timing. How do I update all the timings.

$course_Timeing = $course->courseTimings;
$m = new MultipleIterator();
$m->attachIterator(new ArrayIterator($this->request->getPost('date', 'string')), 'date');
$m->attachIterator(new ArrayIterator($this->request->getPost('timeFrom', 'string')), 'timeFrom');
$m->attachIterator(new ArrayIterator($this->request->getPost('timeTo', 'string')), 'timeTo');
$i = 0;
foreach ($m as $unit) {
    //print_r($unit);
    if (!empty($unit[0]) && !empty($unit[1]) && !empty($unit[2])) {
        $course_Timeing = $course->courseTimings[$i];
        $course_Timeing->assign(array(
            //'course_id' => $course->id,
            'date' => date('Y-m-d', strtotime($unit[0])),
            'timeFrom' => date('H:i:s', strtotime($unit[1])),
            'timeTo' => date('H:i:s', strtotime($unit[2])),
        ));
    }
    $i++;
}

$course->save does not save timings



4.2k
Accepted
answer
edited Jul '14

Well i found a way out for this problem by

$course_Timeing = $course->courseTimings;
$m = new MultipleIterator();
$m->attachIterator(new ArrayIterator($this->request->getPost('date', 'string')), 'date');
$m->attachIterator(new ArrayIterator($this->request->getPost('timeFrom', 'string')), 'timeFrom');
$m->attachIterator(new ArrayIterator($this->request->getPost('timeTo', 'string')), 'timeTo');
$i = 0;
foreach ($m as $unit) {
    //print_r($unit);
    if (!empty($unit[0]) && !empty($unit[1]) && !empty($unit[2])) {
        $course_Timeing = $course->courseTimings[$i];
        $course_Timeing->assign(array(
            //'course_id' => $course->id,
            'date' => date('Y-m-d', strtotime($unit[0])),
            'timeFrom' => date('H:i:s', strtotime($unit[1])),
            'timeTo' => date('H:i:s', strtotime($unit[2])),
        ));
        if (!$course_Timeing[$i]->save()) {
            foreach ($course_Timeing[$i]->getMessages() as $message) {
                $this->flash->error($message);
            }
        }
    }
    $i++;
}