2加入不工作的原则

2加入不工作的原则

本文介绍了Symfony 2加入不工作的原则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有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加入不工作的原则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 09:06
查看更多