Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework2 使用映射器生成实体_Zend Framework2 - Fatal编程技术网

Zend framework2 使用映射器生成实体

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) {

我正试图找到最好的方法来生成一个enities,这就是我目前正在做的

我通过映射器和类似的工具创建实体:

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,但是:当前代码是否存在实际速度问题?记住不要优化那些不需要优化的东西!是的,有一点,当我打电话给一个在树腿上有很多东西的实体时,谢谢你的推荐。谢谢安德鲁,让我看看这个!谢谢安德鲁,让我看看这个!