Tôi muốn xóa một bảng trong cơ sở dữ liệu MySQL của mình. Làm thế nào tôi có thể làm điều đó với Doctrine?Làm thế nào để cắt bớt một bảng bằng Doctrine?
Trả lời
Cắt bớt một bảng với Học thuyết là như "đơn giản" như:
$connection = $entityManager->getConnection();
$platform = $connection->getDatabasePlatform();
$connection->executeUpdate($platform->getTruncateTableSQL('my_table', true /* whether to cascade */));
Nhưng bạn phải biết rằng MySQL sẽ không thể cắt bất kỳ bảng khi nó có một ràng buộc khoá ngoại.
Bạn có thể cắt xén dữ liệu trong MySQL qua Học thuyết để nó bỏ qua ràng buộc khoá ngoại ...
$connection->executeQuery('SET FOREIGN_KEY_CHECKS = 0;');
$truncateSql = $platform->getTruncateTableSQL('table_name');
$connection->executeUpdate($truncateSql);
$connection->executeQuery('SET FOREIGN_KEY_CHECKS = 1;');
thông số cấu hình không được công nhận "foreign_key_checks" – FabulousCo
biến Ngắn (hữu ích nhất trong cuộc di cư)!
Doctrine_Manager::getInstance()->getConnection('doctrine')->getDbh()->exec("TRUNCATE name");
câu hỏi có liên quan đến học thuyết 2, chứ không phải học thuyết 1 – JamesHalsall
Tôi đã khái quát câu trả lời trước cho một chức năng tốt mà tôi đã sử dụng trong dự án của mình, vui lòng chia sẻ.
/**
* @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;');
}
Nếu bạn muốn loại bỏ các đối tượng bao gồm các đơn vị có liên quan mà cuối cùng được nối với nhau bằng các phím nước ngoài bạn có thể sử dụng một truy vấn hàng loạt đơn giản DQL thay vì cắt bỏ:
$q = $em->createQuery('delete from AppBundle\Entity\Customer');
$numDeleted = $q->execute();
http://doctrine-orm.readthedocs.org/en/latest/reference/batch-processing.html#dql-delete
này sẽ chỉ làm việc với các liên kết nếu bạn đã định cấu hình đúng hoạt động xếp tầng và orphanRemoval ví dụ:
class Customer
{
/**
* @ORM\OneToOne(targetEntity="Address", cascade={"all"}, orphanRemoval=true)
*/
public $address;
}
Đây không phải là câu trả lời trực tiếp liên quan đến lệnh MySQL TRUNCATE nhưng vì nó được thực hiện cho Doctrine cách tiếp cận này có thể giải quyết vấn đề của bạn.
Nếu bạn gặp rắc rối với chính nước ngoài tôi làm việc với:
$connection = $this->em->getConnection();
$connection->beginTransaction();
$connection->query('DELETE FROM reception_detail');
$connection->query('ALTER TABLE reception_detail AUTO_INCREMENT = 1');
- 1. Rails seed: Làm thế nào để cắt bớt bảng DB?
- 2. Làm cách nào để cắt bớt bảng đúng cách?
- 3. Sử dụng hibernate/hql để cắt bớt một bảng?
- 4. Làm thế nào để cắt bớt tất cả các bảng người dùng?
- 5. Làm thế nào để cắt bớt một chuỗi để phù hợp trong một container?
- 6. Cắt WPF ngay cả khi không cần cắt bớt - làm thế nào để tắt?
- 7. Làm thế nào để cắt bớt một NSString dựa trên chiều rộng đồ họa?
- 8. Xóa, Cắt bớt hoặc Thả để làm sạch một bảng trong MySQL
- 9. Cách khôi phục dữ liệu từ bảng cắt bớt
- 10. Làm cách nào để cắt bớt danh sách?
- 11. Làm thế nào để cắt bớt các giá trị của một mảng có khối lượng 2D
- 12. Làm thế nào để truy vấn NOT NULL bằng Doctrine?
- 13. log4j cắt bớt stacktrace
- 14. Chuỗi RODBC bị cắt bớt
- 15. Làm thế nào để cắt bớt các văn bản trả về cho một cột trong một truy vấn MySQL
- 16. Làm thế nào để cắt một danh sách bằng Python
- 17. Làm thế nào tôi có thể cắt bớt một datetime trong SQL Server?
- 18. Làm thế nào để cắt bớt quy mô hình học với mục tiêu?
- 19. Cắt bớt đôi mà không làm tròn trong C
- 20. làm errorbars không cắt bớt trong matplotlib với Python
- 21. Trường Máy chủ SQL bị cắt bớt
- 22. Khách hàng Cắt bớt QueryString, gây FormatException
- 23. Làm thế nào để cắt & điền bằng Paperclip (hoặc RMagick)?
- 24. Cột văn bản MySQL bị cắt bớt
- 25. Làm cách nào để ngăn chặn dbms_output.put_line khỏi việc cắt bớt khoảng trắng hàng đầu?
- 26. XmlDocument.WriteĐể cắt bớt tập tin kết quả
- 27. Làm thế nào để xóa các hàng khỏi bảng nối (ManyToMany) trong Doctrine?
- 28. Cắt bớt số 0 đầu của một chuỗi trong Javascript
- 29. Làm thế nào để giảm bớt không gian bảng tạm thời trong oracle?
- 30. Làm thế nào để cấu hình JAXB để nó cắt bớt khoảng trắng khi unmarshalling giá trị thẻ?
Vậy làm thế nào chúng ta có thể truncat – Acyra
On MySQL, bạn có thể không phải là lúc bạn đã phím nước ngoài thành lập ... – Herzult
'executeUpdate() 'hiện không được chấp nhận. Câu trả lời này có thể được cập nhật không? – Alec