2015-10-04 104 views
1

我正在更新某些表中的某些日誌數據。我無法在關聯模型ModulesEmployees上保存最高級別的CoursesEmployees。不能看到缺少的東西。CakePHP 3無法保存關聯的模型

CoursesEmployeeTable.php

$this->hasMany('ModulesEmployees', [ 
     'dependent' => true, 
     'foreignKey' => 'courses_employee_id' 
    ]); 

ModulesSlidesController.php

$this->loadModel('CoursesEmployees'); 

$CoursesEmployee = $this->CoursesEmployees 
    ->get(65, [ 
      'contain' => ['ModulesEmployees'], 
      'where' =>[ 
       ['ModulesEmployees.id' => 19] 
      ] 
     ]); 

if (!$CoursesEmployee['modules_employees'][0]['started_on']) { 
    $CoursesEmployee['modules_employees'][0]['started_on'] = date('Y-m-d H:i:s'); 
}; 

$this->CoursesEmployees->save($CoursesEmployee, ['associated' => ['ModulesEmployees']]); 

返回的對象

CoursesEmployee(array) 
id65 
employee_id3 
course_id1 
course_module_id1 
completed_modules0 
current_slide0 
cid0 
date_started(array) 
progress0 
modified(array) 
created(array) 
completed(false) 
date_completed(null) 
deleted(null) 
modules_employees(array) 
    0(object) 
     id19 
     courses_employee_id65 
     course_module_id1 
     started_on2015-10-04 21:00:10 
     completed_on(null) 
     completed(false) 
     deleted(null) 
[new](false) 
[accessible](array) 
[dirty](empty) 
[original](empty) 
[virtual](empty) 
[errors](empty) 
[repository]CoursesEmployees 

回答

3

只有骯髒的實體/屬性被保存,和你在做什麼有,修改一個嵌套的實體,只會將該嵌套實體標記爲骯髒的父親實體y,CoursesEmployee將保持不變,因此保存過程不會觸及關聯。

當不使用自動將父實體屬性標記爲髒的修補機制時,您必須自行完成此操作。從文檔

報價:

[...]

如果你正在構建或修改關聯數據構建 實體後,你將不得不標記關聯屬性與髒修改 ():

$company->author->name = 'Master Chef'; 
$company->dirty('author', true); 

Cookbook > Database Access & ORM > Saving Data > Saving Associations

所以你的情況它是modules_employees屬性需要被標記爲髒,像

$CoursesEmployee->dirty('modules_employees', true); 
+0

謝謝你,現在更清晰 –