小编jak*_*azs的帖子

Doctrine - 自引用实体 - 禁用获取子项

我有一个非常简单的实体(WpmMenu),它以自引用关系(称为adjecent list)保存相互连接的菜单项?所以在我的实体中我有:

protected $id
protected $parent_id
protected $level
protected $name
Run Code Online (Sandbox Code Playgroud)

与所有的getter/setter关系是:

/**
* @ORM\OneToMany(targetEntity="WpmMenu", mappedBy="parent")
*/
protected $children;

/**
* @ORM\ManyToOne(targetEntity="WpmMenu", inversedBy="children", fetch="LAZY")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onUpdate="CASCADE", onDelete="CASCADE")
*/
protected $parent;

public function __construct() {
   $this->children = new ArrayCollection();
}
Run Code Online (Sandbox Code Playgroud)

一切正常.当我渲染菜单树时,我从存储库中获取根元素,获取其子元素,然后循环遍历每个子节点,获取其子节点并递归执行此操作,直到我渲染每个项目.

会发生什么(以及我正在寻求解决方案)是这样的:目前我有5个等级= 1个项目,并且每个项目都有3个等级= 2个项目附加(并且将来我将使用等级= 3个项目以及).要获取菜单树Doctrine的所有元素,请执行:

  • 1查询根元素+
  • 1个查询以获取5个子元素(level = 1)的根元素+
  • 5个查询以获得每个级别1项目的3个孩子(级别= 2)+
  • 15个查询(5x3)以获取每个级别2项的子项(级别= 3)

总计:22个查询

所以,我需要找到一个解决方案,理想情况下我想只有1个查询.

所以这就是我想要做的事情: 在我的实体存储库(WpmMenuRepository)中,我使用queryBuilder并获得按级别排序的所有菜单项的平面数组.获取根元素(WpmMenu)并从加载的元素数组中"手动"添加其子元素.然后递归地对孩子们这样做.这样做我可以拥有相同的树但只有一个查询.

所以这就是我所拥有的:

WpmMenuRepository:

public function setupTree() {
    $qb = $this->createQueryBuilder("res");
    /** @var Array */
    $res = $qb->select("res")->orderBy('res.level', 'DESC')->addOrderBy('res.name','DESC')->getQuery()->getResult();
    /** @var WpmMenu */
    $treeRoot = …
Run Code Online (Sandbox Code Playgroud)

php orm doctrine query-builder symfony

9
推荐指数
1
解决办法
8582
查看次数

谷歌打包应用-身份API-removeCachedAuthToken

[google chrome 28]chrome.experimental.identity在打包的应用程序中使用API 并且 getAuthToken 工作正常 - get 的令牌,我可以使用它获取用户信息等。我知道身份 API 正在从实验性转移到主干,例如从 chrome 29我将能够从我的清单中使用chrome.identity和删除"experimental"许可。

问:如果我想做一个注销按钮是removeCachedAuthToken怎么回事?我试图在experimental.identity 中使用它,但它什么也没做。

google-chrome-app

3
推荐指数
2
解决办法
1819
查看次数

symfony2 Bundle Updater

我有一个我想分发的Sf2项目.该项目已经可以使用,但是应该/将会随着时间的推移进行修改,所以我正在寻找一个解决方案,而不是重新发明轮子,在我的应用程序中实现更新功能,以便在有更新可用时通知人们 - click程序可以将已部署的版本升级到最新版本.

你有什么想法?有没有类似的东西,我可以看一看?

bundle auto-update symfony composer-php

2
推荐指数
1
解决办法
74
查看次数

SugarCrm创建没有Studio的自定义模块

我正在为Sugar v.6.5.16构建一个自定义模块.这个模块使用其他模块的数据,所以我的模块不需要数据库表,我不想要,不可导入,我实际上不需要任何东西.我有自己的控制器,自己的课程等,故事结束.有用.现在我想创建一个可安装的包,不,我不想在STUDIO中创建一个包.我已经变得非常沮丧,因为每个人都建议在工作室中创建包,选择一种类型(基本,公司等),这​​将添加数据结构,bean,db表 - 这真的很帅但我不想要所有那东西.我实际上用studio创建了一个测试包,我从清单文件中删除了所有bean信息并杀死了vardefs内容,然后我设法安装它,但后来我的模块没有列在"module = Administration&action = ConfigureTabs"中.

所以,问题是我在哪里可以看到我的模块列出?

module sugarcrm

1
推荐指数
1
解决办法
6015
查看次数