如何在PHP中使用左连接数据将数据从映射器保存到实体

如何在PHP中使用左连接数据将数据从映射器保存到实体,php,mysql,entity,datamapper,Php,Mysql,Entity,Datamapper,我有简单的定制实体和映射器类。映射器用于从数据库获取数据,实体是一个集合对象,包含变量、getter/setter方法和实体之间的关系 模型\实体\类别 模型\映射器\类别 用法 从数据库中获取的数组: 名称 链接 类别名称 类别链接 预期阵列: 名称 链接 category=>数组名,链接 如果我有两个查询,我可以得到category数组——首先我得到category,然后第二个查询将根据子id得到主类别,并将其保存到$categories[]['category'] 有什么建议吗?我可以在M

我有简单的定制实体和映射器类。映射器用于从数据库获取数据,实体是一个集合对象,包含变量、getter/setter方法和实体之间的关系

模型\实体\类别

模型\映射器\类别

用法

从数据库中获取的数组:

名称 链接 类别名称 类别链接 预期阵列:

名称 链接 category=>数组名,链接 如果我有两个查询,我可以得到category数组——首先我得到category,然后第二个查询将根据子id得到主类别,并将其保存到$categories[]['category']


有什么建议吗?我可以在Mapper类中创建方法来检查所有category_uuu行,并在special category=数组中设置它们,或者在Entity类中设置它们。。。或者还有别的办法吗?

我想出来了!正如我在上面的帖子中所说,我在Mapper类中创建了一个方法,该方法通过从数据库中获取的行来运行,并查看它是否包含category_uu;string。如果是,则将其保存在特殊的$category数组中

首先,我想把这个方法放在实体类中,但如果我将SQLMapper切换到XML或JSON或类似的具有不同键名的东西,那么我将再次遇到正确保存值的问题

它看起来像这样:

foreach ($data as $key => $value) {
    $class = strstr($key, '_', true);
    if (in_array($class, $this->belongs_to)) {
        // adding $key and $value to newly created array $category = array()
    }
}
class CategoryMapper extends Mapper
{
    public function loadTopNavigation()
    {
        $categories = array();

        $data = $this->db->query('SELECT category.name, category.link, category_master.name AS category_name, category_master.link AS category_link
            FROM category
            LEFT JOIN category AS category_master
                ON category_master.id=category.category_id')
            ->get();

        foreach ($data as $row) {
            $categories[] = new Category($row);
        }

        return $categories;
    }
}
$categoryMapper = new CategoryMapper();
$categories = $categoryMapper->loadTopNavigation();
foreach ($categories as $category) {
    echo '<li>' . $category->getName() . ' - ' . $category->getCategory()->getName() . </li>;
}
foreach ($data as $key => $value) {
    $class = strstr($key, '_', true);
    if (in_array($class, $this->belongs_to)) {
        // adding $key and $value to newly created array $category = array()
    }
}