나는 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)
예를 들어, 새 제품을 생성하려는 경우 팩토리가 새 엔티티를 작성하는 데 사용되는 것으로 이해하면 팩토리를 작성하고 데이터로 채운 후 저장할 수 있습니다. 그러나 다시 주제를 연구하기 시작했고 Fabian Schmengler ( Magento 2의 리포지토리 및 팩토리를 사용해야하는시기? )의 사례를 보았습니다. t 왜 그것이 서비스 계약의 일부가 아니라고 말하는 것 외에는 설명하지 마십시오. 리포지토리가 서비스 계약의 일부라는 것을 이해하는 한 리포지토리를 통해 사용할 수없는 모델을로드 할 때 여기에 연결이 표시되지 않습니다.
혼란을 더하기 위해 생성 된 modelFactory에서 resourceModel을 가져 와서 모델을로드하는 방법을 찾았습니다 .Vinai Kopp ( Magento 2에서 사용자 정의 모듈에 대한 서비스 계약을 구현하는 방법? ) 가 제시했습니다. 리소스 모델을 직접 사용해서는 안된다는 것을 항상 읽었으므로 완전히 사라졌습니다.
예, 누군가 올바른 방법과 다른 방법 대신 사용해야하는 이유를 말해 줄 수 있습니까?