问题描述
我有2个具有OnrtoMany关系的实体,具有许多作业的Vehicle。我试图在VehicleRepository中创建此函数: public function findByJobXVehicle($ dateStart = null,$ dateEnd = null){
$ query = $ this-> createQueryBuilder('v')
- > select('v.plateNumber','SUM(j.kmOdoEnd - j.kmOdoStart)as dist')
- > join('v.jobs','j')
- > groupBy('v.plateNumber');
$ q = $ query-> getQuery() - > getResult();
// get_class($ q [0]);
return $ q;
}
目标车辆是这样的:
<?php
命名空间TeamERP\TransportBundle\Entity;
使用Doctrine\ORM\Mapping作为ORM;
使用Doctrine\Common\Collections\ArrayCollection;
/ **
* @ ORM\Entity
* @ ORM\Table(name =vehicle)
* @ ORM\Entity(repositoryClass =TeamERP\\
$ b / **
* @ ORM\Column(type =integer ,name =id_vehicle)
* @ ORM\Id
* @ ORM\GeneratedValue(strategy =AUTO)
* /
protected $ idVehicle;
/ **
* @ ORM\Column(type =string,length = 7,name =plate_number)
* /
protected $ plateNumber;
/ **
* @ ORM\Column(type =integer,name =distance_to_service)
* /
protected $ DistanceToServiceKm;
/ **
* @ ORM\Column(type =integer,name =last_service_odo)
* /
protected $ lastServiceODOKm;
/ **
* @ ORM\\Column(type =string,length = 100,name =make)
* /
protected $ makeName;
/ **
* @ ORM\Column(type =string,length = 100,name =model)
* /
protected $ modelName;
/ **
* @ ORM\OneToMany(targetEntity =Job,mappedBy =vehicles)
* /
protected $ jobs;
/ **
* @ ORM\OneToMany(targetEntity =FuelPurchase,mappedBy =车辆)
* /
protected $ fuelPurchaces;
public function __construct()
{
$ this-> jobs = new ArrayCollection();
$ this-> fuelPurchaces = new ArrayCollection();
}
然后Job有以下功能:
<?php
命名空间TeamERP\TransportBundle\Entity;
使用Doctrine\ORM\Mapping作为ORM;
/ **
* @ ORM\Entity
* @ ORM\Table(name =job)
* @ ORM\Entity(repositoryClass =TeamERP\\ \\TransportBundle\Entity\JobRepository)
* /
类Job
{
/ **
* @ ORM\Column(type =integer ,name =id_job)
* @ ORM\Id
* @ ORM\GeneratedValue(strategy =AUTO)
* /
protected $ idJob;
/ **
* @ ORM\Column(type =string,length = 20,name =delivery_number)
* /
protected $ deliveryNo;
/ **
* @ ORM\Column(type =datetime,name =date_time)
* /
protected $ dateTime;
/ **
* @ ORM\Column(type =string,length = 200,name =destination)
* /
protected $ destination;
/ **
* @ ORM\Column(type =float,name =km_odo_start,nullable = true)
* /
protected $ kmOdoStart;
/ **
* @ ORM\Column(type =float,name =km_odo_end,nullable = true)
* /
protected $ kmOdoEnd;
/ **
* @ ORM\Column(type =float,name =fuel_used,nullable = true)
* /
protected $ fuelUsedLitre;
/ **
* @ ORM\Column(type =float,name =fuel_price,nullable = true)
* /
protected $ fuelPrice;
/ **
* @ ORM\Column(type =string,length = 100,name =driver_name,nullable = true)
* /
protected $ DRIVERNAME;
/ **
* @ ORM\Column(type =string,length = 250,name =crew_names,nullable = true)
* /
protected $ crewNames;
/ **
* @ ORM\Column(type =string,length = 7,name =triler_plate_number,nullable = true)
* /
protected $ trilerPlateNumber;
/ **
* @ ORM\Column(type =string,length = 500,name =remarks,nullable = true)
* /
protected $言论;
/ **
* @ ORM\Column(type =string,length = 500,name =return_load_plan,nullable = true)
* /
protected $ returnLoadPlan;
/ **
* @ ORM\ManyToOne(targetEntity =Vehicle,inversedBy =job)
* @ ORM\JoinColumn(name =id_vehicle,referencedColumnName = id_vehicle)
* /
protected $ Vehicles;
/ **
* @ ORM\ManyToOne(targetEntity =JobStatus,inversedBy =job)
* @ ORM\JoinColumn(name =id_job_status ,referencedColumnName =id_job_status)
* /
protected $ jobStatus;
/ **
* @ ORM\ManyToOne(targetEntity =JobType,inversedBy =job)
* @ ORM\JoinColumn(name =id_job_type ,referencedColumnName =id_job_type)
* /
protected $ jobType;
/ *我的函数距离计算器* /
public function getJobDistance()
{
return $ this-> kmOdoEnd - $ this-> kmOdoStart;
}
/ *我的函数工作成本计算器* /
public function getJobFuelCost()
{
return $ this-> fuelPrice * $ this-> fuelUsedLitre ;
}
/ *我的函数每公里成本* /
public function getFuelCosdPerKm()
{
if($ this-> getJobFuelCost()> 0)
return round($ this-> getJobDistance()/ $ this-> getJobFuelCost(),3);
return 0;
}
我收到此错误:
ContextErrorException:注意:未定义的索引:D:\Web\wamp\www\team\vendor\doctrine\orm\lib\Doctrine\ORM\Query\SqlWalker.php行中的车辆887
我不知道去哪里看!任何帮助?
javad是正确的$车辆映射指向不存在的变量或数组集合。关于您与其他相关实体的其他相关问题,您发布了在反向映射中可能出现类似错误的燃料购买实体。
I have 2 entities with a OnrtoMany relationship, Vehicle that has many Jobs. I am trying to create this function at the VehicleRepository:
public function findByJobXVehicle($dateStart = null, $dateEnd=null){
$query = $this->createQueryBuilder('v')
->select('v.plateNumber','SUM(j.kmOdoEnd - j.kmOdoStart) as dist')
->join('v.jobs', 'j')
->groupBy('v.plateNumber');
$q = $query->getQuery()->getResult();
//get_class($q[0]);
return $q;
}
The object vehicle is this:
<?php
namespace TeamERP\TransportBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="vehicle")
* @ORM\Entity(repositoryClass="TeamERP\TransportBundle\Entity\VehicleRepository")
*/
class Vehicle
{
/**
* @ORM\Column(type="integer", name="id_vehicle")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $idVehicle;
/**
* @ORM\Column(type="string", length=7, name="plate_number")
*/
protected $plateNumber;
/**
* @ORM\Column(type="integer", name="distance_to_service")
*/
protected $DistanceToServiceKm;
/**
* @ORM\Column(type="integer", name="last_service_odo")
*/
protected $lastServiceODOKm;
/**
* @ORM\Column(type="string", length=100, name="make")
*/
protected $makeName;
/**
* @ORM\Column(type="string", length=100, name="model")
*/
protected $modelName;
/**
* @ORM\OneToMany(targetEntity="Job", mappedBy="vehicles")
*/
protected $jobs;
/**
* @ORM\OneToMany(targetEntity="FuelPurchase", mappedBy="vehicles")
*/
protected $fuelPurchaces;
public function __construct()
{
$this->jobs = new ArrayCollection();
$this->fuelPurchaces = new ArrayCollection();
}
Then the Job has the following:
<?php
namespace TeamERP\TransportBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="job")
* @ORM\Entity(repositoryClass="TeamERP\TransportBundle\Entity\JobRepository")
*/
class Job
{
/**
* @ORM\Column(type="integer", name="id_job")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $idJob;
/**
* @ORM\Column(type="string", length=20, name="delivery_number")
*/
protected $deliveryNo;
/**
* @ORM\Column(type="datetime", name="date_time")
*/
protected $dateTime;
/**
* @ORM\Column(type="string", length=200, name="destination")
*/
protected $destination;
/**
* @ORM\Column(type="float", name="km_odo_start", nullable=true)
*/
protected $kmOdoStart;
/**
* @ORM\Column(type="float", name="km_odo_end", nullable=true)
*/
protected $kmOdoEnd;
/**
* @ORM\Column(type="float", name="fuel_used", nullable=true)
*/
protected $fuelUsedLitre;
/**
* @ORM\Column(type="float", name="fuel_price", nullable=true)
*/
protected $fuelPrice;
/**
* @ORM\Column(type="string", length=100, name="driver_name", nullable=true)
*/
protected $driverName;
/**
* @ORM\Column(type="string", length=250, name="crew_names", nullable=true)
*/
protected $crewNames;
/**
* @ORM\Column(type="string", length=7, name="triler_plate_number", nullable=true)
*/
protected $trilerPlateNumber;
/**
* @ORM\Column(type="string", length=500, name="remarks", nullable=true)
*/
protected $remarks;
/**
* @ORM\Column(type="string", length=500, name="return_load_plan", nullable=true)
*/
protected $returnLoadPlan;
/**
* @ORM\ManyToOne(targetEntity="Vehicle", inversedBy="job")
* @ORM\JoinColumn(name="id_vehicle", referencedColumnName="id_vehicle")
*/
protected $Vehicles;
/**
* @ORM\ManyToOne(targetEntity="JobStatus", inversedBy="job")
* @ORM\JoinColumn(name="id_job_status", referencedColumnName="id_job_status")
*/
protected $jobStatus;
/**
* @ORM\ManyToOne(targetEntity="JobType", inversedBy="job")
* @ORM\JoinColumn(name="id_job_type", referencedColumnName="id_job_type")
*/
protected $jobType;
/* My functions Distance calculator*/
public function getJobDistance ()
{
return $this->kmOdoEnd - $this->kmOdoStart;
}
/* My functions job cost calculator*/
public function getJobFuelCost ()
{
return $this->fuelPrice * $this->fuelUsedLitre;
}
/*My functions cost per Km */
public function getFuelCosdPerKm ()
{
if ($this->getJobFuelCost() > 0)
return round($this->getJobDistance()/$this->getJobFuelCost(),3);
return 0;
}
I am getting this error:ContextErrorException: Notice: Undefined index: vehicles in D:\Web\wamp\www\team\vendor\doctrine\orm\lib\Doctrine\ORM\Query\SqlWalker.php line 887
I do not know where to look! Any help?
javad is correct $Vehicles mapping is pointing to non-existant variable or array collection. On your other related question with these same entities you posted the Fuel Purchase entity that may have had a curiously similar error in the inversedBy mapping.
这篇关于Symfony 2加入不工作的原则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!