Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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 带连接的zf2实体_Zend Framework2_Entity_Mapper - Fatal编程技术网

Zend framework2 带连接的zf2实体

Zend framework2 带连接的zf2实体,zend-framework2,entity,mapper,Zend Framework2,Entity,Mapper,我需要合并几个表中的信息。 在使用实体的情况下,我应该创建所有可能的字段作为属性+设置器/获取器。 但在保存对象时,我应该拆分/取消设置主表中不存在的所有属性 可能有更“真实”的方法来处理它,而不使用教义等。如果我是你,我会更仔细地看看水合器: 创建一个实现HydroOrInterface的新类: namespace Zend\Stdlib\Hydrator; interface HydratorInterface { /** * Extract values from a

我需要合并几个表中的信息。 在使用实体的情况下,我应该创建所有可能的字段作为属性+设置器/获取器。 但在保存对象时,我应该拆分/取消设置主表中不存在的所有属性


可能有更“真实”的方法来处理它,而不使用教义等。

如果我是你,我会更仔细地看看水合器:

创建一个实现HydroOrInterface的新类:

namespace Zend\Stdlib\Hydrator;

interface HydratorInterface
{
    /**
     * Extract values from an object
     *
     * @param  object $object
     * @return array
     */
    public function extract($object);

    /**
     * Hydrate $object with the provided $data.
     *
     * @param  array $data
     * @param  object $object
     * @return void
     */
    public function hydrate(array $data, $object);
}
您需要实现两个功能:

extract($object);
提取将从对象创建一个数组

hydrate(array $data, $object);
水合物将从数组创建对象

执行选择操作时,可以将所有字段放在一个数组中,这样就可以将其放入对象中。提取时,需要将其拆分。您可以通过以下方式实现提取:

public function extract($object)
{
    return array(
        'tbl1' => array(
            'fld1' => $object->getFld1(),
            'fld2' => $object->getFld2(),
            'fld3' => $object->getFld3(),
        ),
        'tbl2' => array(
            'fld4' => $object->getFld4(),
            'fld5' => $object->getFld5(),
        ),
        'tbl3' => array(
            'fld6' => $object->getFld6(),
            'fld7' => $object->getFld7(),
            'fld8' => $object->getFld8(),
            'fld9' => $object->getFld9(),
        ),
    );
}

然后提取数据时,您可以将每组数据传递到正确的表中进行插入或更新。

如果我是您,我会更仔细地查看以下内容:

创建一个实现HydroOrInterface的新类:

namespace Zend\Stdlib\Hydrator;

interface HydratorInterface
{
    /**
     * Extract values from an object
     *
     * @param  object $object
     * @return array
     */
    public function extract($object);

    /**
     * Hydrate $object with the provided $data.
     *
     * @param  array $data
     * @param  object $object
     * @return void
     */
    public function hydrate(array $data, $object);
}
您需要实现两个功能:

extract($object);
提取将从对象创建一个数组

hydrate(array $data, $object);
水合物将从数组创建对象

执行选择操作时,可以将所有字段放在一个数组中,这样就可以将其放入对象中。提取时,需要将其拆分。您可以通过以下方式实现提取:

public function extract($object)
{
    return array(
        'tbl1' => array(
            'fld1' => $object->getFld1(),
            'fld2' => $object->getFld2(),
            'fld3' => $object->getFld3(),
        ),
        'tbl2' => array(
            'fld4' => $object->getFld4(),
            'fld5' => $object->getFld5(),
        ),
        'tbl3' => array(
            'fld6' => $object->getFld6(),
            'fld7' => $object->getFld7(),
            'fld8' => $object->getFld8(),
            'fld9' => $object->getFld9(),
        ),
    );
}
然后提取数据时,可以将每组数据传递到正确的表以进行插入或更新