Я маю досить великий досвід роботи з Magento, але зрозумів, що не розумію, який спосіб завантаження моделі є правильним і чому. Я прочитав усе, що міг, про цю тему, але люди, що пояснюють такі речі, ніколи насправді не заглиблюються, щоб пояснити, навіщо використовувати цей конкретний метод замість іншого. Припустимо, що для моделі, яку я хочу завантажити, немає сховища.
До цього моменту я завжди використовував модель в конструкторі, а потім просто завантажував її.
public function __construct(
\Vendor\Module\Model\Something $somethingModel
) {
$this->somethingModel = $somethingModel;
}
public function getTestById($id) {
return $this->somethingModel->load($id);
}
І це завжди працювало так, як було призначено, я також впевнений, що це або, принаймні, в основному використовується.
Але потім я побачив, як хтось із колег використовує
modelFactory->create()->load($id)
Наскільки я розумію, фабрики використовуються для створення нового об'єкта, наприклад, якщо я хотів створити новий продукт, то я можу створити фабрику, заповнити її даними і потім зберегти. Але потім я знову почав досліджувати цю тему, і побачив приклад Фабіана Шменглера ( Коли ми повинні використовувати сховище та завод у Magento 2? ), Який завантажував модель таким чином, а також відштовхував інших від просто завантаження моделей, він не став ' t поясніть, чому, окрім того, що сказати, що це "не є частиною договору на послуги". Наскільки я розумію, сховища є частиною контрактів на обслуговування, тому я не бачу тут ніякого зв'язку, коли мова заходить про завантаження моделей, недоступних через сховище.
Щоб додати ще трохи плутанини, я також знайшов спосіб завантаження моделі, отримуючи resourceModel зі створеної моделіFactory, її представив Vinai Kopp ( Як реалізувати контракт на обслуговування користувацького модуля в Magento 2? ), І тепер я повністю втрачений, оскільки я завжди читав, що я не повинен безпосередньо використовувати моделі ресурсів.
Так так, невже хтось може сказати мені, що це правильний спосіб, і чому я повинен використовувати його замість усіх інших методів?