모델의 afterSave
콜백에서 멀리 떨어진 협회에서 데이터에 액세스하려는 상황이 있습니다. 이는 매우 유익한 연결 고리가있는 레거시 데이터 모델입니다. 내가 찾은 것은 콜백 내에서 모델에 대한 찾기 호출을 실행할 수 있지만 바로 종료하면 레코드가 데이터베이스에 삽입되지 않는다는 것입니다. 레코드가 없으면 현재 모델에 삽입 된 데이터를 사용하여 관련 모델에서 찾기를 실행할 수 없습니다.CakePHP afterSave Timing
afterSave
콜백이 참여하는 시점에 데이터가 실제로 커밋 된시기에 대해 언급하지 않았습니다. 기존 코드로 작업하고 있지만 거래가 구체적으로 이루어지고 있음을 알 수 없으므로 옵션이 무엇인지 파악하려고합니다.
감사합니다. 우리는 이벤트 등록을 복용하고 있지만 사람들이 나열 기다려 할 수 있습니다
UPDATE
시나리오의 요지는 이것이다. 사용자는 주어진 Date
에 등록 (또는 등록) 할 수 있습니다. 등록이 완료되면 (WaitList.date_id
) 등록 날짜에 등록 사용자 (WaitList.user_id
)에 대한 레코드가 있는지 대기 목록을 확인해야합니다. 그러한 레코드가 있으면 활성 레코드가되므로 레코드를 삭제할 수 있습니다.
레거시 스키마는 등록이 날짜에 직접 연결되지 않는 장소에 나를 둔다. 따라서 Date.id
을 쉽게 얻을 수 없다. 대신 Registration->Registrant->Ticket->Date
. Unintuitive, 나도 알아,하지만 지금은 그것이 무엇인지. 심지어 더 나은 (풍자 포함), 우리는 attendees
라는이 정보를 모두 롤백하고 새로 만든 Registration->id
을 사용하여 Attendee.date_id
을 반환 할 수 있습니다. 레코드가 존재하지 않으므로 뷰에서 사용할 수 없습니다.
좀 더 자세한 정보를 제공하시기 바랍니다.
나는 약간의 배경 지식으로 질문을 업데이트했다. 어쩌면 그것이 당신의 질문에 대답하는 데 도움이 될 것입니다. –
내 대답 업데이트 –
이 응용 프로그램은 여기 저기에 있습니다. 내가보기 및 다른 재미있는 모든 종류의 물건에서 데이터 조작을 논쟁하려고합니다. 스키마와 모든 기존 데이터를 다시 작업하면 안됩니다. 나는 그 자리에 진절머리 나는 솔루션을 가지고 있지만 괜찮은 옵션을 찾고있어 누락 된 데이터베이스 레코드가 시작하기에 좋은 장소 인 것 같습니다. 솔직히 말해서 나는 'aftersave'에서 기대하지 않았다고 말할 수있는 한 가지입니다. –