我有一个问题。 我正在使用Bundle存储与我公司硬件相关的所有内容(包括每个VM的名称,运行该组件的应用程序等),而我还有另一个将自己的信息添加到这些机器中。第一个叫做CMDB,第二个称为PSI。
PSI Bundle取决于CMDB捆绑包,但相反的是假的。
CMDB包中的一个实体是codeSA,表示应用程序代码。 但是在PSI包中,我想为每个codeSA添加一个Perimeter。周边有多个codeSA。
我希望获得与组件相关的所有信息。我可以毫无问题地获取它的codeSA。但我也希望得到它的外围!我怎么能这样做,因为codeSA不知道它的外围我不能在codeSA实体中与周边建立关系!
我所做的就是在外围使用多种操作,就像这样 :
/**
*
* @ORM\ManyToMany(targetEntity="G\GMOBundle\Entity\Application")
* @ORM\JoinTable(name="gmo_psi_perimetre_sa",
* joinColumns={@ORM\JoinColumn(name="perimetre_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="codeSA_id", referencedColumnName="id_SYSTEME_APPLICATIF")}
* )
*/
private $codeSA;
我正在使用的是querybuilder:
$qb = $this->createQueryBuilder('a')
->join('a.composant','comp')
->join('comp.correspondanceApplications', 'corr')
->join('corr.systemeApplicatif','cs') //this is the codeSA table
->join('GGMOPSIBundle:Perimetre','p','WITH','cs.id = p.codeSA') //i want to get my perimetre
但我得到了
'codeSA WHERE'附近:错误:无效的PathExpression。期望StateFieldPathExpression或SingleValuedAssociationField。
另外,当我得到我的实体时,我可以去codeSA,如:entuity.composant.correspondanceApplications.systemeApplicatif,但我怎样才能访问外围?
希望我足够清楚。不要犹豫,要求提供更多代码。
谢谢!