私は実体を生成するための最良の方法を見つけようとしています。これが私が現在行っていることです。
次のように、マッパーとハイドレーターを使用してエンティティを作成します。
namespace Event\Model\Mapper;
use ZfcBase\Mapper\AbstractDbMapper;
class Event extends AbstractDbMapper
{
protected $tableName = 'events';
public function findEventById($id)
{
$id = (int) $id;
$select = $this->getSelect($this->tableName)
->where(array('event_index' => $id));
$eventEntity = $this->select($select)->current();
if($eventEntity){
//Set Location Object
$locationMapper = $this->getServiceLocator()->get('location_mapper');
$locationEntity = $locationMapper->findlocationById($eventEntity->getLocationIndex());
$eventEntity->setLocationIndex($locationEntity);
//Set User Object
$userMapper = $this->getServiceLocator()->get('user_mapper');
$userEntity = $userMapper->findUserById($eventEntity->getEnteredBy());
$eventEntity->setEnteredBy($userEntity);
//Set Catalog Object
$catalogMapper = $this->getServiceLocator()->get('catalog_mapper');
$catalogEntity = $catalogMapper->findCatalogById($eventEntity->getCatalogIndex());
$eventEntity->setCatalogIndex($catalogEntity);
}
return $eventEntity;
}
}
このアプローチの問題は、ユーザーエンティティを呼び出すと、このエンティティに他のエンティティがアタッチされているため、ユーザーエンティティを挿入してイベントエンティティを生成すると、イベントエンティティが非常に大きくなり、かさばることになります。 「老年学ツリー」の最初のレイヤーが必要です。
そこで、イベントエンティティの子エンティティをバインドできるEventEntityFactoryを作成することを考えていました。そのために、ファクトリを作成することを計画していました。
これを行うためのより良い方法はありますか?
ありがとう