Intereting Posts

Symfony 2 присоединяется к неработающей доктрине и MySQL

Примечание: этот пост был решен с использованием этого метода, проблема была в одном из моих сущностей, поэтому любая вещь, которую я пробовала, которая работала бы в нормальных условиях, была плохой из-за этого. Я не знаю, как отметить это сейчас.

У меня есть следующие объекты репозитория: Vehicle, Job, FuelPurchase.

Для intance vahicle:

/** * @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(); } ... 

и Fuel puchase:

 /** * @ORM\Entity * @ORM\Table(name="fuel_purchace") * @ORM\Entity(repositoryClass="TeamERP\TransportBundle\Entity\FuelPurchaseRepository") */ class FuelPurchase { /** * @ORM\Column(type="integer", name="id_fuel_purchace") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $idFuelPurchace; /** * @ORM\Column(type="string", length=20, name="invoice_number") */ protected $invoice; /** * @ORM\Column(type="datetime", name="date_time") */ protected $dateTime; /** * @ORM\Column(type="float", name="fuel_used", nullable=true) */ protected $fuelUsed; /** * @ORM\Column(type="float", name="fuel_price", nullable=true) */ protected $fuelPrice; /** * @ORM\Column(type="float", name="km_odo", nullable=true) */ protected $kmOdo; /** * @ORM\ManyToOne(targetEntity="Vehicle", inversedBy="FuelPurchace") * @ORM\JoinColumn(name="id_vehicle", referencedColumnName="id_vehicle") */ protected $vehicles; /** * @ORM\Column(type="string", length=250, name="refuling_remarks", nullable=true) */ protected $remarks; /** * @ORM\Column(type="string", length=100, name="refuling_person", nullable=true) */ protected $refueler; ... 

Также Иов:

 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; } .... 

Я пытаюсь сделать стыковки между 3 из них, чтобы сделать отчет, но я начал просто; соединение между Vehicle и FuelPurchase , но я не могу заставить его работать. Проверьте мой репозиторий:

 class VehicleRepository extends EntityRepository { public function findByCriteria ($dateStart, $dateEnd) { $query = $this->createQueryBuilder(); $query->select('v', 'f') ->from('TeamERPTransportBundle:Vehicle', 'v') ->innerJoin('TeamERPTransportBundle:FuelPurchase', 'f') ->groupBy('v.plateNumber') ->getQuery(); return $query->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY); } } 

Я получаю эту ошибку:

ContextErrorException: Warning: Missing argument 1 for Doctrine\ORM\EntityRepository::createQueryBuilder(), called in D:\Web\wamp\www\team\src\TeamERP\TransportBundle\Entity\VehicleRepository.php on line 17 and defined in D:\Web\wamp\www\team\vendor\doctrine\orm\lib\Doctrine\ORM\EntityRepository.php line 81

Издание 1: Я также пробовал это:

  $query = $this->createQueryBuilder('v'); $query->select('v', 'f') ->from('TeamERPTransportBundle:Vehicle', 'v') ->innerJoin('TeamERPTransportBundle:FuelPurchase', 'f') ->groupBy('v.plateNumber'); $aux = $query->getQuery(); $result = $aux->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY); return $result; 

И ошибка, которую я получаю, такова:

[Syntax Error] line 0, col 106: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got ','

Рамовение from :

  $query = $this->createQueryBuilder('v'); $query->select('v', 'f') ->innerJoin('TeamERPTransportBundle:FuelPurchase', 'f') ->groupBy('v.plateNumber'); $aux = $query->getQuery(); $result = $aux->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY); return $result; 

Он дает эту ошибку:

[Синтаксическая ошибка] строка 0, столбец 113: Ошибка: ожидаемый букв, полученный 'BY'

Издание 2: Мне удалось создать соединение с двумя таблицами, используя следующий код:

 class VehicleRepository extends EntityRepository { public function findByCriteria ($dateStart = null, $dateEnd=null) { $query = $this->createQueryBuilder('v') ->select('v.plateNumber','SUM(f.fuelUsed) as totalFuel', 'SUM(f.fuelUsed*f.fuelPrice) as totalFuelCost') ->join('v.fuelPurchaces', 'f') //->join('v.jobs', 'j') ->groupBy('v.plateNumber') ->getQuery()->getResult(); return $query; } } 

Теперь я не могу добавить третью таблицу, если я удалю отметку комментария из соединения для заданий, тогда я получаю следующую ошибку: ContextErrorException: Notice: Undefined index: vehicles in D:\Web\wamp\www\team\vendor\doctrine\orm\lib\Doctrine\ORM\Query\SqlWalker.php line 887

Есть идеи? Спасибо, любая помощь будет оценена по достоинству.