Tôi mới dùng Doctrine và vẫn còn một số vùng mờ cho tôi. Trong trường hợp này, tôi chèn bản ghi mới vào cơ sở dữ liệu bằng cách sử dụng vòng lặp và trình quản lý thực thể. Nó hoạt động tốt nhưng tôi nhận thấy rằng Doctrine thực hiện một truy vấn chèn theo thực thể, có thể trở nên khá lớn.Doctrine2 - Nhiều lần chèn vào một ảnh
Sử dụng Doctrine2 và Symfony 2.3, tôi muốn biết cách chúng tôi có thể thiết lập để nó chỉ tạo 1 truy vấn chèn với tất cả các giá trị trong đó (chúng tôi chỉ nói đến 1 thực thể).
Những gì tôi có nghĩa là đang thay đổi này:
INSERT INTO dummy_table VALUES (x1, y1)
INSERT INTO dummy_table VALUES (x2, y2)
Into
INSERT INTO dummy_table VALUES (x1, y1), (x2, y2)
Đây là mã của tôi:
$em = $this->container->get('doctrine')->getManager();
foreach($items as $item){
$newItem = new Product($item['datas']);
$em->persist($newItem);
}
$em->flush();
Vì cái gì vấn đề bạn sẽ kết hợp các truy vấn này thành một trong những đơn? – Touki
Tôi đã suy nghĩ về cải tiến hiệu suất. Đây chỉ là một ví dụ, trong pratice nó có khả năng nhất là khoảng 20 thực thể để chèn. Vì vậy, việc chỉ kết nối sẽ nhanh hơn nhiều so với kết nối n. EDIT: Tôi tìm thấy [câu trả lời này] (http://stackoverflow.com/questions/1793169/which-is-faster-multiple-single-inserts-or-one-multiple-row-insert) về chủ đề này rất. – Molkobain
Tôi có thể cảnh báo bạn, giáo lý bổ sung khá nhiều chi phí cho mỗi chèn bạn làm (quản lý nhà nước và như vậy), vì vậy đối với chèn thực sự lớn tôi muốn chọn truy vấn DBAL thay vì các mối quan hệ ORM thay thế. // chỉ 2 xu của tôi –