我在Employee和Schedule之间有很多关系。 编辑员工时,我设法获取当前的时间表并填写表单。
保存后,我使用:
if ($this->Employee->save($this->request->data)) {
$this->Employee->Schedule->save($this->request->data, $validate = false);
....
}
员工数据保存正常,但计划记录保持不变。
我实际上是将id作为数组的一部分提供。在我的控制器上,debug($ this-> request-> data)显示:
array(
'Employee' => array(
'emp_position' => '1',
'name' => 'the name',
'emp_gender' => '1',
'emp_father' => '',
'emp_mother' => '',
'emp_dob' => 'October 13, 1964',
...
..
),
'Schedule' => array(
(int) 0 => array(
'id' => '7',
'ho_lu2' => '10:00',
'ho_ma2' => '01:00',
'ho_mi2' => '00:00',
'ho_ju2' => '00:00',
'ho_vi2' => '00:00',
'ho_do4' => '00:00'
)
)
)
***************** Update ************
我认为这与我的两张桌子上的外键不同有关
我的员工表:
CREATE TABLE IF NOT EXISTS `employees` (
`id` int(5) DEFAULT NULL,
`emp_appserial` int(5) unsigned NOT NULL AUTO_INCREMENT,
...
(请注意,在Employee表上,emp_appserial是我的pk autoincr,而employee_id对于某些记录可以为null)
我的日程表:
CREATE TABLE IF NOT EXISTS `schedules` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`employee_id` int(5) unsigned NOT NULL,
...
由于我使用不同的字段链接这些表,我使用foreignKey:
在我的模型上,我链接: 员工模型:
var $hasMany = array(
'Schedule' => array(
'foreignKey' => 'employee_id', //(field on Schedule)
'dependent' => true
)
);
public $primaryKey = 'emp_appserial'
日程表模型:
var $belongsTo = array('Employee',
'Employee' => array(
'foreignKey' => 'emp_appserial' //(field on Employee)
)
);
我发布的数据现在包括Schedule的employee_id和Employee的emp_appserial
array(
'Employee' => array(
'id' => null,
'emp_appserial' => '119'
...
),
'Schedule' => array(
(int) 0 => array(
'id' => '6',
'name' => 'segundo horario',
'emp_appserial' => '119',
'employee_id' => '119'
)
)
)
(尝试附加安排id和serial以试试我的运气 - 不好。)
非常感谢任何帮助。
非常感谢!
答案 0 :(得分:0)
“作为一项规则,当使用hasOne,hasMany和belongsTo关联时,它的所有关于键控” - CakePHP手册。
您的Employee数组必须传递一个id,并且schedule数组需要有一个employee_id,因此cake知道链接的模型是什么。