Zend framework 使用Zend框架获取类别和项目
目前我下面的代码运行良好,但有点过头了。在我的控制器中,我获取具有链接的类别以及数据库中的所有链接。 在我看来,我循环了所有类别,然后当我想在类别下添加链接时,我循环了数据库中的所有链接,而我应该只循环分配给当前类别的链接,但我不知道如何使用Zend Framework来做到这一点。有人能把我送到正确的方向吗。谢谢你抽出时间 控制器:Zend framework 使用Zend框架获取类别和项目,zend-framework,view,doctrine,foreach,Zend Framework,View,Doctrine,Foreach,目前我下面的代码运行良好,但有点过头了。在我的控制器中,我获取具有链接的类别以及数据库中的所有链接。 在我看来,我循环了所有类别,然后当我想在类别下添加链接时,我循环了数据库中的所有链接,而我应该只循环分配给当前类别的链接,但我不知道如何使用Zend Framework来做到这一点。有人能把我送到正确的方向吗。谢谢你抽出时间 控制器: public function indexAction() { $this->view->title = App_Tr
public function indexAction()
{
$this->view->title = App_Translate::translate('links_title');
$this->view->headTitle($this->view->title, 'PREPEND');
$linkCat = Doctrine_Query::create()
->distinct()
->from('LinkCategory lc')
->innerJoin('lc.Link l WITH lc.id = l.link_category_id')
->orderBy('lc.id')
->execute();
$links = Doctrine_Query::create()
->from('Link')
->execute();
$this->view->linkCat = $linkCat;
$this->view->links = $links;
}
}
视图:
-
没有添加链接
您的问题实际上与Zend Framework无关。您正在使用条令而不是ZF获取数据
在您的情况下,我认为您应该能够使用
foreach($linkCat->linkas$Link)
循环特定类别中的链接,看看您如何使用innerJoin加载关系。您的问题与Zend Framework没有真正的关系。您正在使用条令而不是ZF获取数据
在您的情况下,我认为您应该能够使用
foreach($linkCat->linkas$Link)
循环特定类别中的链接,查看如何使用innerJoin加载关系。而不是执行这两个查询,您不能只执行一个吗
我看到您在第一个查询中有一个内部联接,所以我认为这是可能的;我想你有一个规则,说“一个链接在一个且只有一个类别中”,这是一个一对多的关系;也许手册的这一部分可以帮助你
我要做的可能是:
- 从第一个查询中删除distinct,以获取每个查询及其类别的所有links+
- 这是你想要的清单,不是吗
- 此外,还可以按类别和链接排序,因此更易于显示(链接已按类别排序)
- 删除第二个查询
$linkCat = Doctrine_Query::create()
->from('LinkCategory lc')
->innerJoin('lc.Link l WITH lc.id = l.link_category_id')
->orderBy('lc.name, l.name')
->execute();
(但未测试:可能需要更多的调谐)
一旦有了这些数据,就将其传递给视图,在那里进行循环——记住,Lonk已经按类别进行了排序:
- 显示第一个类别的名称;将其存储在变量中
- 在链接上循环
- 如果当前链接的类别与上一个链接的类别不同(存储在变量中),则表示它是一个类别的结束,新类别的开始
- 继续
- 当您到达链接的末尾时,它也是最后一个类别的末尾
作为旁注:您使用的是条令类、编写DQL以及控制器中的所有内容——这完全不是问题所在:所有这些都应该放在模型类中,而不是控制器中
玩得开心 不要做这两个查询,你不能只做一个吗 我看到您在第一个查询中有一个内部联接,所以我认为这是可能的;我想你有一个规则,说“一个链接在一个且只有一个类别中”,这是一个一对多的关系;也许手册的这一部分可以帮助你 我要做的可能是:
- 从第一个查询中删除distinct,以获取每个查询及其类别的所有links+
- 这是你想要的清单,不是吗
- 此外,还可以按类别和链接排序,因此更易于显示(链接已按类别排序)
- 删除第二个查询
$linkCat = Doctrine_Query::create()
->from('LinkCategory lc')
->innerJoin('lc.Link l WITH lc.id = l.link_category_id')
->orderBy('lc.name, l.name')
->execute();
(但未测试:可能需要更多的调谐)
一旦有了这些数据,就将其传递给视图,在那里进行循环——记住,Lonk已经按类别进行了排序:
- 显示第一个类别的名称;将其存储在变量中
- 在链接上循环
- 如果当前链接的类别与上一个链接的类别不同(存储在变量中),则表示它是一个类别的结束,新类别的开始
- 继续
- 当您到达链接的末尾时,它也是最后一个类别的末尾
作为旁注:您使用的是条令类、编写DQL以及控制器中的所有内容——这完全不是问题所在:所有这些都应该放在模型类中,而不是控制器中
玩得开心