0
我需要合併來自多個表的信息。 在使用實體的情況下,我應該爲它們創建所有可能的字段作爲屬性+ setters/getters。 但在保存對象 - 我應該拆分/取消設置不在主表中的所有屬性。帶連接的zf2實體
可能有更多的「真實」的方式來處理它,而無需使用原則等
我需要合併來自多個表的信息。 在使用實體的情況下,我應該爲它們創建所有可能的字段作爲屬性+ setters/getters。 但在保存對象 - 我應該拆分/取消設置不在主表中的所有屬性。帶連接的zf2實體
可能有更多的「真實」的方式來處理它,而無需使用原則等
如果我是你,我會仔細看看Hydrators:
創建一個新的類,它實現了HydratorInterface:
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);
水合物將從數組中創建一個對象。
當你做一個選擇你可以在1個數組中有所有的字段,所以你沒有問題把它放在對象中。提取時,你希望它分裂。你可以以這樣的方式實現摘錄:
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(),
),
);
}
當你再提取數據,可以將每個組數據傳遞到正確的表中插入或更新。