Saya memiliki cukup banyak pengalaman dengan Magento tetapi saya menyadari bahwa saya tidak mengerti cara memuat model mana yang benar dan mengapa. Saya sudah membaca semua yang saya bisa, tentang topik ini tetapi orang-orang yang menjelaskan hal-hal seperti ini tidak pernah benar-benar menjelaskan, mengapa menggunakan metode khusus ini daripada yang lain. Mari kita asumsikan tidak ada repositori untuk model yang ingin saya muat.
Sampai sekarang saya selalu menggunakan model dalam konstruktor dan kemudian hanya memuatnya.
public function __construct(
\Vendor\Module\Model\Something $somethingModel
) {
$this->somethingModel = $somethingModel;
}
public function getTestById($id) {
return $this->somethingModel->load($id);
}
Dan itu selalu berfungsi sebagaimana mestinya, saya juga cukup yakin itu atau setidaknya digunakan secara umum dalam inti.
Tapi kemudian saya melihat salah satu rekan saya menggunakan
modelFactory->create()->load($id)
Sejauh yang saya pahami pabrik digunakan untuk membuat entitas baru, misalnya, jika saya ingin membuat produk baru maka saya dapat membuat pabrik, mengisi dengan data dan menyimpannya. Tapi sekali lagi, saya mulai meneliti topik dan saya melihat contoh dari Fabian Schmengler ( Kapan Kita Harus Menggunakan Repositori dan Pabrik di Magento 2? ) Yang memuat model dengan cara ini dan juga mencegah orang lain dari hanya memuat model, dia tidak Saya tidak menjelaskan mengapa selain mengatakan bahwa itu 'bukan bagian dari kontrak layanan'. Sejauh yang saya mengerti repositori adalah bagian dari kontrak layanan, jadi saya tidak melihat koneksi di sini ketika datang ke memuat model yang tidak tersedia melalui repositori.
Untuk menambahkan lebih banyak kebingungan, saya juga telah menemukan cara memuat model dengan mendapatkan resourceModel dari menciptakan modelFactory, disajikan oleh Vinai Kopp ( Bagaimana menerapkan kontrak layanan untuk modul khusus di Magento 2? ) Dan sekarang saya benar-benar hilang karena saya selalu membaca bahwa saya tidak boleh menggunakan model sumber daya secara langsung.
Jadi ya, bisakah seseorang memberi tahu saya cara mana yang benar dan mengapa saya harus menggunakannya daripada semua metode lainnya?