对于这个问题,我的数据库中有3个实体:
案例到行:1个案例到多行(1个案例有n行)
贷款行:1行至多笔贷款(1行有n笔贷款)
我希望在我的控制器中按ID获取一个Case(Dosier),然后到foreach行,然后预先获得每笔贷款。
因此,对于每个贷款对象,我想执行一些计算并收集所有这些数据。
我如何访问贷款对象,为我的计算做下一件事(例如$ loan-> getCapital(),$ loan-> getDuration()?
我试过这样的方式:
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request)
{
$user = $this->getUser();
$dosiers = $this->getDoctrine()
->getRepository('AppBundle:Dosier')
->createQueryBuilder('e')
->select('e')
->where('e.userId = :id')
->andwhere('e.isActive = 1')
->orderBy('e.id', 'DESC')
->setParameters(array('id'=> $user))
->getQuery()
->getResult();
foreach ($line as $dosiers->getLines()) {
foreach ($loan as $line->getLoans()) {
echo $loan->getName();
}
}
return $this->render('AppBundle:default:index.html.twig', array(
'dosiers' => $dosiers
));
}//indexAction
但它给了我错误:
编译错误:在写上下文中不能使用方法返回值
答案 0 :(得分:1)
啊,我找到了解决方案:
此代码:
$dosiers = $this->getDoctrine()
->getRepository('AppBundle:Dosier')
->createQueryBuilder('e')
->select('e')
->where('e.userId = :id')
->andwhere('e.isActive = 1')
->orderBy('e.id', 'DESC')
->setParameters(array('id'=> $user))
->getQuery()
->getResult();
返回与该条件匹配的对象数组,而不是返回一个对象。
所以,我在test:
中更改了test的查询$ dosiers = $ em-> getRepository(' AppBundle:Dosier') - > findOneBy(array(' id' => 15)); 和循环:
foreach ($dosiers->getLines() as $line) {
foreach ($line->getLoans() as $loan) {
echo $loan->getName();
}
}
现在它有效。接下来,只需要为操作添加新参数$id
,而不是常量' 15'在查询中放置$id
。