Chcę opróżnić tabelę w mojej bazie danych MySQL. Jak mogę to zrobić w Doctrine?Jak skrócić tabelę za pomocą Doctrine?
Odpowiedz
Obcinanie tabelę z doktryną jest „proste” jak:
$connection = $entityManager->getConnection();
$platform = $connection->getDatabasePlatform();
$connection->executeUpdate($platform->getTruncateTableSQL('my_table', true /* whether to cascade */));
Ale trzeba wiedzieć, że MySQL nie będzie w stanie obciąć dowolną tabelę raz ma klucz obcy.
Można obciąć danych w MySQL za pośrednictwem Doktryny tak że ignoruje kluczy obcych ...
$connection->executeQuery('SET FOREIGN_KEY_CHECKS = 0;');
$truncateSql = $platform->getTruncateTableSQL('table_name');
$connection->executeUpdate($truncateSql);
$connection->executeQuery('SET FOREIGN_KEY_CHECKS = 1;');
nierozpoznany parametr konfiguracyjny "foreign_key_checks" – FabulousCo
Krótki wariant (najbardziej przydatny w migracjach)!
Doctrine_Manager::getInstance()->getConnection('doctrine')->getDbh()->exec("TRUNCATE name");
pytanie dotyczy doktryny 2, a nie doktryny 1 – JamesHalsall
Uogólniłem odpowiedź wcześniej na fajną funkcję, której użyłem w moim projekcie, nie krępuj się udostępniać.
/**
* @param array $tableNames Name of the tables which will be truncated.
* @param bool $cascade
* @return void
*/
public function truncateTables($tableNames = array(), $cascade = false) {
$connection = $this->em->getConnection();
$platform = $connection->getDatabasePlatform();
$connection->executeQuery('SET FOREIGN_KEY_CHECKS = 0;');
foreach ($tableNames as $name) {
$connection->executeUpdate($platform->getTruncateTableSQL($name,$cascade));
}
$connection->executeQuery('SET FOREIGN_KEY_CHECKS = 1;');
}
Jeśli chcesz usunąć podmioty w tym podmiotów powiązanych, które są ostatecznie połączone kluczy obcych można użyć po prostu DQL zapytanie wsadowy zamiast obcinania:
$q = $em->createQuery('delete from AppBundle\Entity\Customer');
$numDeleted = $q->execute();
http://doctrine-orm.readthedocs.org/en/latest/reference/batch-processing.html#dql-delete
tylko to będzie pracować ze skojarzeniami, jeśli poprawnie skonfigurowano operacje kaskadowe i orphanRemoval np .:
class Customer
{
/**
* @ORM\OneToOne(targetEntity="Address", cascade={"all"}, orphanRemoval=true)
*/
public $address;
}
To nie jest bezpośrednia odpowiedź dotycząca polecenia MySQL TRUNCATE, ale ponieważ jest to przypisane do Doctrine, to podejście może rozwiązać twój problem.
Jeśli masz problem z kluczem obcym mi pracować:
$connection = $this->em->getConnection();
$connection->beginTransaction();
$connection->query('DELETE FROM reception_detail');
$connection->query('ALTER TABLE reception_detail AUTO_INCREMENT = 1');
- 1. skrócić całą tabelę w bazie danych mysql
- 2. Jak odczytać tabelę html za pomocą Rselenium?
- 3. Jak zwrócić tabelę za pomocą mysql Funkcja
- 4. Jak przestawiać tabelę za pomocą T-SQL?
- 5. Jak uzyskać tabelę za pomocą rvest()
- 6. Jak mogę skrócić adres URL za pomocą niestandardowego schematu?
- 7. Przechowywanie macierzy za pomocą Doctrine i MongoDB
- 8. Zmień nazwę tabeli za pomocą migracji Doctrine
- 9. Paginacja za pomocą Doctrine i ZF2
- 10. Czy można Paginować tabelę za pomocą jquery?
- 11. Czy mogę skrócić to wyrażenie regularne za pomocą przecięcia?
- 12. Odśwież tabelę przestawną za pomocą Apache POI
- 13. Jak używać KNPPaginatorBundle do dzielenia stron za pomocą repozytorium Doctrine?
- 14. Jak skrócić listę?
- 15. Jak zrobić tabelę td zajmującą całą szerokość za pomocą css?
- 16. szyny, Jak zbudować tabelę w helper za pomocą content_tag?
- 17. Jak utworzyć tabelę HTML z tablicą wielowymiarową za pomocą SMARTY?
- 18. Jak wygenerować tabelę zawartości za pomocą pakietu OpenXML SDK 2.0?
- 19. Jak wyświetlić tabelę wyników za pomocą usług Google Play?
- 20. Testowanie jednostkowe za pomocą Zend Framework/Doctrine 2.0
- 21. Zrzuć dane bazy danych za pomocą Doctrine 2
- 22. Nazwy zmiennych: Jak skrócić "indeks"?
- 23. Jak skrócić plik w C?
- 24. Eksportuj tabelę HTML do programu Excel za pomocą programu ASP.NET
- 25. Oracle: utwórz tabelę tymczasową za pomocą instrukcji SELECT
- 26. jak skrócić składnię jquery jeśli-else instrukcja?
- 27. Unit Doctrine Doctrine ODM
- 28. Jak skrócić NSString na podstawie szerokości graficznej?
- 29. Jak skrócić czas wyszukiwania clang_complete przez zwiększenie
- 30. Jak mogę skrócić NSString do ustawionej długości?
Więc jak możemy truncat – Acyra
Na MySQL, nie można natomiast masz klucze obce skonfigurować ... – Herzult
'executeUpdate() 'jest teraz przestarzałe. Czy ta odpowiedź może zostać zaktualizowana? – Alec