everyone!onDelete와 연결된 엔티티 : CASCADE 옵션과 둘 다 소프트 삭제 가능하지 않음
내가 캐스케이드이 연관된 엔티티 (사용자, 사진) = "제거"옵션을 모두 내가 사용자를 삭제 softdelete을 사용하면 사진 deleted.and했다 놓아야합니다
소프트 삭제 가능한 지금이 아니라이 일.
softdelete없이 모든 것이 완벽하게 작동합니다.
누구든지이 문제를 해결할 수 있습니까?
내 코드 :
Picture.orm.yml
Leo\TestBundle\Entity\Picture:
type: entity
repositoryClass: Leo\TestBundle\Entity\PictureRepository
table: null
manyToOne:
user:
targetEntity: User
inversedBy: pictures
joinColumn:
name: user_id
referencedColumnName: id
onDelete: CASCADE
gedmo:
soft_deleteable:
field_name: deletedAt
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
name:
type: string
length: 255
path:
type: string
length: 255
deletedAt:
type: datetime
nullable: true
User.orm.yml :
Leo\TestBundle\Entity\User:
type: entity
table: null
repositoryClass: Leo\TestBundle\Entity\UserRepository
oneToMany:
pictures:
targetEntity: Picture
mappedBy: user
gedmo:
soft_deleteable:
field_name: deletedAt
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
username:
type: string
length: 255
email:
type: string
length: 255
password:
type: string
length: 255
sex:
type: integer
bloodtype:
type: string
length: 10
birthday:
type: date
pr:
type: text
salt:
type: string
length: 255
deletedAt:
type: datetime
nullable: true
lifecycleCallbacks: { }
응용 프로그램/설정/config.yml
doctrine:
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
filters:
softdeleteable:
class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
enabled: true
액션
public function deleteAction()
{
$token = $this->getRequest()->get('token');
if (! $this->get('form.csrf_provider')->isCsrfTokenValid('user_list', $token)) {
//TODO use setFlashBag
$this->get('session')->setFlash('notice', 'Woops! Token invalid!');
return $this->redirect('user_list');
}
//$em = $this->getDoctrine()->getEntityManager();
$em = $this->getDoctrine()->getManager();
$user = $this->getUser();
$pictures = $user->getPictures();
$em->remove($user);
/* foreach($pictures as $p){
unlink($p->getAbsolutePath());
} */
$em->flush();
$this->get('security.context')->setToken(null);
$this->getRequest()
->getSession()
->invalidate();
return $this->redirect($this->generateUrl('leo_test_homepage'));
}
`
는 캐스케이드 옵션은 데이터베이스에 존재인가? –
아니요! 용서하십시오, 나는 당신의 평균이 무엇인지를 정말로 이해하지 못합니다 .. –
코드에 코드를 추가하는 것만으로는 충분하지 않습니다. doctrine : schema : update --force 명령을 실행 했습니까? 아니면 수동으로 데이터베이스에 캐스케이드를 추가 했습니까? –