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