【发布时间】:2014-04-26 18:47:53
【问题描述】:
我有 3 个 Symfony2 实体,它们以下列方式相关:
- 带有车牌号、品牌、型号的车辆。此外,车辆还有许多工作和燃料购买
- Job 有一种方法可以给出作业的总距离(在作业开始时使用里程表,在作业结束时使用里程表。
- Fuel Purchase 有升、燃料价格和成本方法。
想要呈现一个表格报告,其中包含基于一段时间的车牌号、总距离、总燃料、燃料成本、公里/升、总工作量。 还想对执行所有这些操作的数据库进行传统查询,我发布了this 问题。你可以在那里看到一些实际的物体。但如果我没记错的话,Symfony2 的理念是使用具有所有这些对象的车辆对象来执行此操作。您认为最好的方法是什么? 只是我无法设法在对象数组中上下移动。我试过这个:
class ReportsController extends Controller
{
public function renderAction(Request $request)
{
$vehicles = $this->getDoctrine()
->getRepository('TeamERPTransportBundle:Vehicle')->findAll();
$countVehicles = 0;
$countJobsXVehicle = array();
foreach ($vehicles as $vehicle)
{
$VehicleJobs = $vehicle->getJobs();
$countJobsXVehicle[$countVehicles] = 0;
$countVehicles++;
//This piece of code gives the error
foreach ($VehicleJobs as $VehicleJob)
{
$countJobsXVehicle[$countVehicles]++;
}
//I am planing to do the same for Fuel purchase
//$VehicleRefuels = $vehicle->getFuelPurchaces();
//foreach ($VehicleRefuels)
}
}
}
有了这个我得到这个错误:
ContextErrorException: Notice: Undefined index: vehicles in D:\Web\wamp\www\team\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\BasicEntityPersister.php line 1753
如何让它发挥作用? 感谢您的帮助!
编辑: 我也试过这个:
class ReportsController extends Controller
{
public function renderAction(Request $request)
{
$vehicles = $this->getDoctrine()->getRepository('TeamERPTransportBundle:Vehicle')->findAll();
$countVehicles = 0;
$countJobsXVehicle[] = 0;
foreach ($vehicles as $vehicle)
{
$VehicleJobs = new ArrayCollection();
$VehicleJobs[] = $vehicle->getJobs();
$countJobsXVehicle[$countVehicles] = $this->VehicleJobs($VehicleJobs);
//$VehicleRefuels = $vehicle->getFuelPurchaces();
//foreach ($VehicleRefuels)
$countVehicles++;
}
}
return $this->render('TeamERPTransportBundle:Transport:report.html.twig', array('vehicles' => $vehicles,
'countJobsXVehicle' => $countJobsXVehicle,
'countVehicles' => $countVehicles,
'render' => $graph));
}
private function VehicleJobs (ArrayCollection $VehicleJobs){
$countJobsXVehicle = 0;
foreach ($VehicleJobs as $VehicleJob)
{
$countJobsXVehicle++;
//var_dump($VehicleJob);
}
return $countJobsXVehicle;
}
}
它可以工作,但它的行为方式与预期不同。 实体类是here。
【问题讨论】:
-
我在您的代码中没有看到任何调用
vehicles索引的数组。您确定问题中的代码是第 1753 行的代码吗? -
@n.1 我真的不明白你的意思,也许是因为我太笨了。查看问题的版本。
-
我想知道为什么错误消息提到
vehicles,而没有这个名称的变量。
标签: php mysql symfony object doctrine-orm