CakePHP3의 Entity의 accessible에서 빠진 이야기

2301 단어 cakephp3

CakePHP3의 Entity의 accessible에서 빠진 이야기



CakePHP3에는 Entity에 $_accessible 속성이 있습니다.
htp // 보오 k. 곱셈 php. 오 rg/3.0/쟈/오 rm/엔치치에 s. html # 맘 s 아시 g 멘 t

↓Bake하면 자주 보는 이거입니다.
    protected $_accessible = [
        'id' => false,
        '*' => true,
    ];


이 상태라면 id는 변경 불가, 그 이외는 변경 가능이라고 하게 되어, Save시의 Entity의 프로퍼티에 값을 세트 했다고 해도 보존되지 않습니다.
이를 이용하여 이번에 있는 항목은 input 폼에는 readonly를 붙여 POST되지만 저장되지 않는다는 같은 구현을 했습니다.

라고 하는 전제를 바탕으로 이번 빠진 점에 대해 이야기합니다.

빠진 문제



관계를 붙인 끝의 Entity에 상정한 accessible 설정하고 있는데 보존되지 않는다!

구성



테이블 관계



엔터프라이즈 정보 테이블과 이에 연결하는 계정 정보를 저장하는 두 개의 테이블이 있으며 hasmany에서 관계가 붙어 있습니다.



코드



기업 정보는 모두 편집 불가이므로 모든 항목을 false로 하고 있습니다.
class Company extends Entity
{
    protected $_accessible = [
        '*' => false,
    ];
}

계좌 정보는 모두 편집 가능하기 때문에 모든 항목을 id 이외 true로 하고 있습니다.
class Bank extends Entity
{
    protected $_accessible = [
        '*' => true,
        'id' => false,
    ];
}

화면



같은 화면에서 기업과 계좌 정보를 동시에 편집하고 있다.

결론



이렇게 써야 했어
class Company extends Entity
{
    protected $_accessible = [
        '*' => false,
        'bank' => true, <-リレーション先をココに書く
    ];
}

무슨 일이야



POST되는 데이터 구조에서 accessible 지정을 해야 한다는 것이었습니다.
관계 구조를 보고 CakePHP가 잘 헤아릴 수 있는 일은 없습니다.

요약



accessible을 잘 사용하는 것으로 save시의 프로퍼티로부터 삭제하는 것 같은 기술이 불필요하게 될까 생각합니다.
Entity를 보면, 보존되는지, 되지 않는지,가 한번에 알 수 있을까 생각하기 때문에 사용해 보면 좋을지도입니다.

※gurad 옵션을 false로 했을 경우는 그러하지 않습니다만...
htp // 보오 k. 곱셈 php. 오 rg/3.0/쟈/오 rm/엔치치에 s. HTML#I d9

좋은 웹페이지 즐겨찾기