我试图让一些推进对象填充一些联合数据。
问题:
我有2个表,我们称它们为表a和表b,表A是表B的父表,关系是一对多,其中一个父表可以有多个子表。
我想对子表执行查询,并获取其父项,并按父ID对结果进行分组,以便稍后我可以将每个子项打印到html中的父选项卡中。
这是我的架构
<table name="countries">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="name" type="VARCHAR" size="128" required="true" />
<column name="country_code" phpName="CountryCode" type="VARCHAR" size="7" required="true" />
<column name="status" phpName="Status" type="BOOLEAN" required="true" defaultValue="false" />
<behavior name="timestampable" />
<behavior name="soft_delete" />
</table>
<table name="banks">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="name" phpName="Name" type="VARCHAR" size="128" required="true" />
<column name="status" phpName="Status" type="BOOLEAN" required="true" defaultValue="false" />
<column name="country_id" phpName="CountryId" type="INTEGER" required="true" />
<foreign-key foreignTable="countries" phpName="Countries" onDelete="setnull" onUpdate="cascade"><!-- country parent -->
<reference local="country_id" foreign="id" />
</foreign-key>
<behavior name="timestampable" />
<behavior name="soft_delete" />
</table>
我一直在阅读很多没有太多运气的东西,说实话,我没有做太多的测试,因为我似乎没有办法解决这个问题。
<?php
public function banks(Application $app)
{
$banks = BanksQuery::create()
->where('banks.status = ?', true)
->find();
$nav_options = $this->getNav($app);
$admin_level = false;
return $app['twig']->render('admin/banks.twig', array
(
'admin_level' => $admin_level,
'nav_options' => $nav_options,
'banks' => $banks
)
);
}
还尝试了其他方法来构建查询,没有骰子。
<?php
$banks = BanksQuery::create()
->orderByCountryId()
->joinWithCountries('banks.country_id')
->where('banks.status = ?', true)
->find();
整个想法是让每个孩子按每个父母分组,所以如果我有3个父母,每个父母都有1到N个孩子,那么我可以用html打印,每个父母作为标签和它的孩子作为每个标签的内容。
如果我要查询每个父项,那么可以使用useCountriesQuery() - &gt; filterById(ID-HERE),但我想在一次扫描中使用它。
有办法做我想做的事吗?
答案 0 :(得分:0)
好吧我找到了一个不同的查询解决方案。 leftJoinWithBanks(&#39; Banks.CountryId&#39;) - &GT; orderById() - &GT;发现(); 通过查询加入银行的国家,我得到了我需要的信息,所以这很有用。