2016-07-22 26 views
0

我有JobsTable:的CakePHP 3的hasMany更新奇怪的行为

这是关系定义:

$this->hasMany('JobContracts', [ 
    'foreignKey' => 'job_id' 
]); 

保存代码:

$entity = $this->patchEntity($entity, $toSave, [ 
     'fieldList' => ['notes], 
     'associated' => [ 
      'JobContracts' => ['fieldList' => ['id', 'checked']] 
     ] 
    ]); 

现在:
如果我把这个注意到fieldList然后JobContracts不正确保存。
如果我删除fieldList中,那么我能够正确地保存它。

问题是为什么呢?我还需要控制基本模型字段。有什么建议么?

伊夫已经检查:http://book.cakephp.org/3.0/en/orm/saving-data.html#avoiding-property-mass-assignment-attacks

+0

请尽量避免像“保存不正确”的描述,这可能意味着绝对的东西,并在编程世界它是所有关于是精确的。即使问题可能是那些知道CakePHP的内部人明显的,请永远是尽可能具体以什么_exactly_情况,以及你所期待,而不是发生。 – ndm

回答

1

您需要允许分配关联属性太多,不仅notes。如果不这样做,那么相关的数据永远不会成为对所得到的实体集,因此不会被保存。

检查你又链接的文档,标签示例显示正是:

// Only allow changing the title and tags 
// and the tag name is the only column that can be set 
$entity = $this->patchEntity($entity, $data, [ 
    'fieldList' => ['title', 'tags'], 
    'associated' => ['Tags' => ['fieldList' => ['name']]] 
]); 
$this->save($entity); 

http://book.cakephp.org/3.0/en/orm/saving-data.html#avoiding-property-mass-assignment-attacks

所以,加job_contracts字段列表,和你应该很好。