관계를 수정할 때마다 (여러 대 다수) 다른 작업을 수행하고 싶습니다. 아는 한 이벤트 리스너를 사용하여 수행 할 수 없습니다 (https://github.com/laravel/framework/issues/2303 참조). 이 작동,Laravel : 함수를 동기화 할 때 호출하거나 첨부하십시오.
function setUserGroups($ids){
$this->groups->sync($ids);
doSomethingElse();
}
단점은 다른 개발자가이 기능을 사용하는 것을 기억하기가 쉽지 않다는 점입니다. 일반적으로 mutators를 사용하여 다른 속성을 변경하기 위해 행동을 첨부 할 수 있습니다.이를 경계 또는 이벤트 추가로 정의하고 동기화/첨부와 비슷한 작업을 수행 할 수 있기를 바랍니다.
이 문제에 대한 해결책으로 저장소를 만드는 것을 볼 수 없습니다. 우리는 애플리케이션에서 저장소 패턴을 사용하지 않고 있고 솔직히이 문제도 거기에 나타나고 있습니다. 당신은
function setUserGroups($ids){
$this->groups->sync($ids);
// Fire the event
Event->fire('user.groupsModified');
}
이 방법 :
// register listener
Event::listen('user.groupsModified', '[email protected]');
이벤트 처리기 :
// Handle event in User class
function onGroupsModified($event)
{
}
그런 다음 setUserGroups
함수에서 이벤트가 발생
3 년 1 년 및 솔루션 없음. 지금까지 찾은 최고의 방법은 "업데이트하는"웅변적인 방법을 사용하는 것입니다. 그러나 DB에서 업데이트하기 전에 바로 호출해야합니다. 필드를 계산하는 데 유용하지만 모든 사람들을위한 솔루션이 아닐 수도 있습니다. – George
결국 내 축을 내 자신의 모델로 변환 결국 –