2017-11-01 25 views
0

이 MySQL은 : [ '이름'을 'ID']웅변 삭제하고 나는이 MySQL 데이터베이스에서 테이블에 외래 키 폭포

사용자를

역할 [ 'ID', '제목']와

user_role [ 'user_id', 'role_id'] 둘 다 외래 키인 CASCADE입니다.


예외를 catch하면 관계 테이블의 행이 삭제되는 동안 사용자는 원하는대로 테이블에 남아 있습니다.

try{ 
    $user->delete(); 
} 
catch (\Exception $e){ 
    throw new \Dingo\Api\Exception\DeleteResourceFailedException('Error.'); 
} 

이 웅변의 실수입니까?


이제이 문제를 해결할 방법을 알아 냈지만 최상의 방법이라고 확신하지 못합니다. 그것을 할 수있는 더 좋은 방법이 있습니까?

try{ 
    $roleId = $user->roles[0]->id; 
    $user->delete(); 
} 
catch (\Exception $e){ 
    $user->roles()->attach($roleId); 
    throw new \Dingo\Api\Exception\DeleteResourceFailedException('Error.'); 
} 

답변

0

귀하의 질문을 이해하면 거래가 필요한 것입니다.

DB::transaction(function() { 
    $user->delete(); 
}); 

및 경우에

Database Transactions

당신은 교착 상태가 속임수를 썼는지이 하나

DB::transaction(function() { 
    $user->delete(); 
},5); 
+0

예를 사용에 직면 해있다. 나는 아직도 시험 잡기, 물마루로 그것을 싸야했다. 많은 감사합니다! – Gantman94