Tôi có khá nhiều kinh nghiệm với Magento nhưng tôi nhận ra rằng tôi không hiểu cách tải mô hình nào là đúng và tại sao. Tôi đã đọc mọi thứ mà tôi có thể, về chủ đề này nhưng mọi người giải thích những thứ như thế này thực sự không bao giờ đủ sâu để giải thích, tại sao lại sử dụng phương pháp cụ thể này thay vì phương pháp khác. Giả sử không có kho lưu trữ cho mô hình tôi muốn tải.
Cho đến bây giờ tôi vẫn luôn sử dụng mô hình trong hàm tạo và sau đó chỉ cần tải nó.
public function __construct(
\Vendor\Module\Model\Something $somethingModel
) {
$this->somethingModel = $somethingModel;
}
public function getTestById($id) {
return $this->somethingModel->load($id);
}
Và nó luôn hoạt động như dự định, tôi cũng khá chắc chắn rằng nó hoặc ít nhất được sử dụng phổ biến trong lõi.
Nhưng sau đó tôi thấy một trong những đồng nghiệp của mình đang sử dụng
modelFactory->create()->load($id)
Theo như tôi hiểu thì các nhà máy đang được sử dụng để tạo ra một thực thể mới, ví dụ, nếu tôi muốn tạo ra một sản phẩm mới thì tôi có thể tạo ra nhà máy, điền dữ liệu vào đó và sau đó lưu nó. Nhưng sau đó, một lần nữa, tôi bắt đầu nghiên cứu chủ đề và tôi thấy ví dụ từ Fabian Schmengler ( Khi nào chúng ta nên sử dụng Kho lưu trữ và Nhà máy trong Magento 2? ), Người đang tải mô hình theo cách này và cũng không khuyến khích người khác tải đơn giản các mô hình, anh ta đã không ' Tuy nhiên, giải thích tại sao ngoài việc nói rằng đó không phải là một phần của hợp đồng dịch vụ '. Theo như tôi hiểu thì các kho lưu trữ là một phần của hợp đồng dịch vụ nên tôi không thấy bất kỳ kết nối nào ở đây khi nói đến việc tải các mô hình không có sẵn thông qua một kho lưu trữ.
Để thêm một số nhầm lẫn, tôi cũng đã tìm ra cách tải mô hình bằng cách lấy resourceModel từ mô hình đã tạo, nó được trình bày bởi Vinai Kopp ( Cách triển khai hợp đồng dịch vụ cho mô-đun tùy chỉnh trong Magento 2? ) Và bây giờ tôi hoàn toàn mất đi vì tôi luôn đọc rằng tôi không nên sử dụng các mô hình tài nguyên trực tiếp.
Vì vậy, vâng, ai đó có thể cho tôi biết đó là cách chính xác và tại sao tôi nên sử dụng nó thay vì tất cả các phương pháp khác?