2016-05-11 2 views
1

[Обратите внимание, что у меня нет кода для этой проблемы, мне нужен код, я попытался объяснить его наилучшим образом и если вы можете помочь, это будет здорово]Symfony: удалить все записи в таблице, у которых есть идентификатор в строке в столбце таблицы

так вот сделка, у меня есть поле в таблице с именем «заказ» для каждого пользователя. Основная задача пользователя - привести других пользователей в систему, и когда они приведут нового пользователя, их идентификатор будет прикреплен (согласован) с идентификатором пользователя и сохранен в его «поле заказа»

, например.

пользователь 'a' имеет идентификатор 31. 'a' вводит 'b', которому назначено 32, теперь b поэтому b имеет значение: '31 -32 ', хранящееся в его поле «order». аналогично, если b вводит 'c', чей id равен 35, порядок для c будет: '31 -32-35 ', и он идет так далее.

Теперь, когда я удаляю 'a', я хочу ВСЕХ пользователей, у которых есть свой идентификатор в своих полях заказа, то есть, если я решил удалить 'a' в этом выше поле, все пользователи должны быть удалены из системы !

Я хочу сделать это через контроллер symfony, и я думаю, что это можно сделать с помощью функции findAll() в symfony, но я не знаю, как его использовать.

Пожалуйста, помогите, я действительно застрял!

+0

Вы делаете это неправильно. У вас есть отношения родитель-ребенок. Таблица должна иметь родительский столбец. Затем сделайте внешний ключ и каскад для удаления. Затем вы удаляете одну запись, и она каскадирует всех детей. – kainaw

+0

У меня есть родительский столбец в таблице, но процесс становится рекурсивным, когда вы хотите удалить дочерний элемент дочернего элемента, поэтому мы должны продолжать получать идентификаторы и логически более напряженными. –

+0

Если у вас есть родительский столбец И вы сделали это внешний ключ И вы устанавливаете delete на каскаде. THEN вы удаляете только одну запись, чтобы удалить всех детей и детей этих детей и детей этих детей ... Это гораздо менее «напряженный», чем попытка сделать это вручную. Кроме того, это означает, что вы случайно не забудете удалить ребенка и попросите детей-сирот. – kainaw

ответ

0

я сделал с помощью родительского поля в каждой таблице для пользователя:

и вот код, если возникнет такая вещь, для кого-то:

<?php 

$repo = $em->getRepository('SystemBundle:Distributor'); 
$temp = $slug; 
$pd = $repo->findAll(); 
for ($i = 1; $i <= count($pd); $i++) { 
    $u = $repo->findOneBy(['parent' => $temp]); 
    if ($u) { 
     $temp = $u->getId(); 
     $em->remove($u); 
     $em->flush(); 
    } else { 
     break; 
    } 
} 
$dis = $repo->findOneBy(["id" => $slug]); 
$em->remove($dis); 
$em->flush(); 

Использование для цикла было возможно сделать

Смежные вопросы