只能保存数组cakephp3中的最后一条记录


can only save last record in array cakephp3

由于某种原因,我无法保存所有多条记录,因为我只保存了最后一条记录。我尝试过原子和验证等选项,但它并不能解决问题。我没有得到一个错误信息,为什么它不是所有的节省,所以我浪费时间只是猜测。

发生的情况是,我只保存了大约7条记录中的最后一条记录,所以它确实保存了,但只保存了一次。我只保存在一个表没有关联。没有错误输出,我不知道该怎么做

 $alltimesheetLessons = $this->TimesheetLessons->newEntities( $timesheetLesson, ['validate' =>  false]);

                foreach ( $alltimesheetLessons as $key => $entity) {
               // debug($entity->toArray());
                  $this->TimesheetLessons->save($entity, ['atomic' =>  false]);
                }//for 

//下面是2条记录的示例

'tutor_id' => (int) 12,
'subject_id' => (int) 16,
'lesson_plan' => 'q1)Evidence:',
'lesson_date' => object(Cake'I18n'FrozenDate) {
    'time' => '2016-09-20T00:00:00+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false
},
'period_start_date' => object(Cake'I18n'FrozenDate) {
    'time' => '2016-09-19T00:00:00+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false
},
'period_end_date' => object(Cake'I18n'FrozenDate) {
    'time' => '2016-10-02T00:00:00+00:00',
    'timezone' => 'UTC',
    'fixedNowTime' => false
},
'lesson_id' => (int) 18913,
'submit_date' => '2016-10-02',
'invoice' => '49',
'term_id' => (int) 0,
'start_time' => '10:00 ',
'end_time' => '11:00 ',
'student_name' => 'jjde',
'class_year' => (int) 8,
'subjectname' => 'Maths: Year 7 - 10',
'makeup_lesson' => false,
'makeup_lesson_expired' => false,
'makeup_expiry_date' => null,
'lesson_inactive' => false,
'cancelled_by' => '',
'schedule_rec' => false,
'forefit' => (int) 0,
'cancelled_date' => null,
'tutoring_type_id' => (int) 1,
'payrate' => (float) 20,
'lesson_duration' => (float) 1,
'amount' => (float) 20

)

 'src'Controller'LessonsController.php (line 2590)
[
    'tutor_id' => (int) 12,
    'subject_id' => (int) 16,
    'lesson_plan' => 'q1)EvidimplestvformHomeWork:',
    'lesson_date' => object(Cake'I18n'FrozenDate) {
        'time' => '2016-09-20T00:00:00+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false
    },
    'period_start_date' => object(Cake'I18n'FrozenDate) {
        'time' => '2016-09-19T00:00:00+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false
    },
    'period_end_date' => object(Cake'I18n'FrozenDate) {
        'time' => '2016-10-02T00:00:00+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false
    },
    'lesson_id' => (int) 18914,
    'submit_date' => '2016-10-02',
    'invoice' => '49',
    'term_id' => (int) 0,
    'start_time' => '11:00 ',
    'end_time' => '12:00 ',
    'student_name' => 'Jhj',
    'class_year' => (int) 8,
    'subjectname' => 'Maths: Year 7 - 10',
    'makeup_lesson' => false,
    'makeup_lesson_expired' => false,
    'makeup_expiry_date' => null,
    'lesson_inactive' => false,
    'cancelled_by' => '',
    'schedule_rec' => false,
    'forefit' => (int) 0,
    'cancelled_date' => null,
    'tutoring_type_id' => (int) 1,
    'payrate' => (float) 20,
    'lesson_duration' => (float) 1,
    'amount' => (float) 20
]
 foreach ($data as  $key => $item):

                $timesheetLesson[$key]['tutor_id']=$item['tutor_id'];
                $timesheetLesson[$key]['subject_id']=$item['subject_id'];
                $timesheetLesson[$key]['lesson_plan']=$item['lesson_plan'];
                $timesheetLesson[$key]['lesson_date']=date('Y-m-d', strtotime($item['lesson_date']));
                $timesheetLesson[$key]['period_start_date']=date('Y-m-d', strtotime($startdate));
                $timesheetLesson[$key]['period_end_date']=date('Y-m-d', strtotime($enddate));
                $timesheetLesson[$key]['lesson_id']=$item['id'];
                $timesheetLesson[$key]['submit_date'] = date('Y-m-d');
                $timesheetLesson[$key]['invoice']=$invoice;
                $timesheetLesson[$key]['term_id']=$item['term_id'];
                $timesheetLesson[$key]['start_time']=date('h:i ', strtotime($item['start_time']));
                $timesheetLesson[$key]['end_time']=date('h:i ', strtotime($item['end_time']));

              endforeach;

$result =将覆盖数组的每次迭代;让它填充最后一个循环。要创建一个新的数组,可以使用:

$result[] =

您需要将结果压入数组$result。这样的:

$result[] = ...;
       ^^

或:

array_push($result, $value_pushed);

我发现了错误,因为有一个构建规则正在停止输入字段的0条目。