Tôi có một bộ sưu tập trong một phương thức mà tôi muốn thực hiện hai thao tác khác nhau trên bộ sưu tập này. Vì vậy, tôi muốn hai bản sao riêng biệt của cùng một bộ sưu tập, sau đó gán một trong hai bộ sưu tập cho bộ sưu tập gốc và trả lại.
Để làm cho nó đơn giản, giả sử tôi có một bộ sưu tập đối tượng được gọi $collection
.
Bây giờ, tôi đang thử nó với nhân bản PHP vì tôi không biết liệu có bộ sưu tập Magento nào được nhân bản hay không.
$coll1 = clone $collection;
$coll2 = clone $collection;
Bây giờ tôi đang cố gắng thực hiện các hoạt động khác nhau trên hai bản sao riêng biệt này của bộ sưu tập gốc, đại loại như thế.
$coll1->getSelect()->where('some where condition');
$coll2->getSelect()->where('some different where condition');
if($coll1->count() == 0) {
$collection = $coll2;
} else {
$collection = $coll1;
}
Nhưng điều kỳ lạ là, cả hai bộ sưu tập nhân bản này đều có cả những điều kiện được giao! Điều kiện $ coll1 được áp dụng cho $ coll2 cùng với điều kiện của $ coll2 và ngược lại.
Có ai biết làm thế nào để đạt được điều này?
Cảm ơn!
$collection->getSelect()
và không nằm trong chính bộ sưu tập.