Lỗi SQL khi lập trình thêm hình ảnh vào sản phẩm


7

Tôi đang cập nhật sản phẩm theo chương trình và sau đó thêm hình ảnh vào chúng thông qua

$ sản phẩm-> addImageToMediaGallery ($ file, mảng (<flags>), true, false);

Đối với một số sản phẩm, điều này hoạt động tốt, đối với những người khác, nó mang lại cho tôi

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`db11057204-walthermagestaging`.`catalog_product_entity_media_gallery_value`, CONSTRAINT `FK_CAT_PRD_ENTT_MDA_GLR_VAL_VAL_ID_CAT_PRD_ENTT_MDA_GLR_VAL_ID` FOREIGN KEY (`value_id`) REFERENCES `c), query was: INSERT INTO `catalog_product_entity_media_gallery_value` (`value_id`, `store_id`, `label`, `position`, `disabled`) VALUES (?, ?, ?, ?, ?)

Tôi chưa thể xác định một mô hình nào.

Nó nói rằng một ràng buộc khóa ngoại không thành công, nhưng trong thông báo lỗi, mục tiêu của FK bị cắt sau chữ cái đầu tiên, khiến tôi không biết gì. Nhìn ở đâu? Phải làm sao

BIÊN TẬP

Vì các sản phẩm này được tạo tự động, có thể là không có media_gallerythuộc tính eav? Nếu vậy, làm thế nào tôi có thể kiểm tra?


stackoverflow.com/questions/8456954/ Hãy kiểm tra câu trả lời này có lẽ nó giúp ích ..
Qaisar Satti

@QaisarSatti uhhh, đây không phải chính xác là những gì tôi đang làm sao?
Yorrd

Phiên bản Magento nào?
philwinkle

@philwinkle 1.9.1.1
Yorrd

Câu trả lời:


4

Tôi đã thấy điều này trước đây và nó là kết quả của việc viết mã như thế này:

Mã bị hỏng không chạy:

<?php

$collection = Mage::getModel('catalog/product')->getCollection();
foreach($collection as $product){
    $product->addImageToMediaGallery($file, array( < flags > ), true, false);
    $product->save();
}

Giải pháp

Điều này không chỉ gây ra tải và khóa, mà bộ sưu tập hình ảnh không được tải trên bộ sưu tập, điều này gây ra các ràng buộc khóa ngoại không thành công.

Thay vì lưu trong vòng lặp, tập lệnh của bạn có thể mô phỏng bảng quản trị để bạn có thể lưu các bộ sưu tập. Ngoài ra, bạn sẽ muốn thêm thư viện phương tiện vào bộ sưu tập của mình:

<?php

require('app/Mage.php');
umask(0);
Mage::setIsDeveloperMode(true);
Mage::app();
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect(array('image', 'media_gallery'));

foreach($collection as $product){
    $product->addImageToMediaGallery($file, array( < flags > ), true, false);
}
$collection->save();

1
Tôi đang tải sản phẩm với một mô hình, điều này sẽ tải tất cả các thuộc tính, phải không?
Yorrd

Ok, những gì tôi đã làm chỉ là tải lại sản phẩm, điều đó rõ ràng sẽ tải mọi thứ. Tôi vẫn sẽ đánh dấu của bạn là chấp nhận, bạn giải thích vấn đề.
Yorrd

Tải sản phẩm trong một vòng lặp và sau đó lưu nó chắc chắn sẽ gây ra bế tắc khi gọi nó là save (). Vui mừng vì đã được giúp đỡ, mặc dù!
philwinkle

0

Tôi đã có thông báo lỗi này, khi hai hình ảnh sản phẩm có cùng tên tệp. Tôi nhập sản phẩm qua magmi và khi quản trị viên cố gắng lưu sản phẩm sau khi chỉnh sửa, ảnh sẽ bị xóa. Giải pháp thay thế là đổi tên ảnh sản phẩm hoặc tải ảnh thủ công qua bảng quản trị, bảng quản trị sẽ đổi tên và xử lý tên chính xác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.