Zend framework2 使用映射器生成实体
我正试图找到最好的方法来生成一个enities,这就是我目前正在做的 我通过映射器和类似的工具创建实体:Zend framework2 使用映射器生成实体,zend-framework2,Zend Framework2,我正试图找到最好的方法来生成一个enities,这就是我目前正在做的 我通过映射器和类似的工具创建实体: namespace Event\Model\Mapper; use ZfcBase\Mapper\AbstractDbMapper; class Event extends AbstractDbMapper { protected $tableName = 'events'; public function findEventById($id) {
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,在这里我可以绑定Event enity的子实体,我计划为此创建一个工厂
有更好的方法吗
感谢一种方法是使用虚拟代理(延迟加载): 基本上,您将生成实体,并用轻量级代理对象替换任何相关实体。此对象仅在需要时通过延迟加载加载相关实体
我已经在Datamapper设计模式中多次使用过这种方法,而且效果非常好。一种方法是使用虚拟代理(延迟加载): 基本上,您将生成实体,并用轻量级代理对象替换任何相关实体。此对象仅在需要时通过延迟加载加载相关实体
我已经在Datamapper设计模式中多次使用过这种方法,而且效果非常好。一种不太笨重的方法是编写手动查询,只进行一次查询,然后使用自定义HydroTorHi Sam将查询结果映射到您的对象。您有没有一个示例,我试图了解自定义HydroTor是如何工作的,但无法理解。谢谢手头没有密码,对不起。只能指向方向:S,但是:当前代码是否存在实际速度问题?记住不要优化那些不需要优化的东西!是的,有一点,就在我给一个树腿上有很多的实体打电话的时候,谢谢你的推荐。一个不那么笨重的方法是编写手动查询,只有一个查询,然后使用自定义HydroTorHi Sam将查询结果映射到你的对象。你有没有一个例子,我试着看看自定义HydroTor是如何工作的,但不明白。谢谢手头没有密码,对不起。只能指向方向:S,但是:当前代码是否存在实际速度问题?记住不要优化那些不需要优化的东西!是的,有一点,当我打电话给一个在树腿上有很多东西的实体时,谢谢你的推荐。谢谢安德鲁,让我看看这个!谢谢安德鲁,让我看看这个!