2016-07-22 2 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 내부를 아는 사람들에게 명백 할지라도, _ 정확한 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 발생하는 경우와 _ _ _ _ _ 가능한 _ 구체적인 _ – 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를 추가하고 : 다시 연결 한 워드 프로세서, 태그의 예는 정확히 보여줍니다

확인 좋다.